当我关闭调制解调器同时保持路由器打开时如何检测互联网连接?

Posted

技术标签:

【中文标题】当我关闭调制解调器同时保持路由器打开时如何检测互联网连接?【英文标题】:How to detect the internet connection when I close my modem while keep the router open? 【发布时间】:2012-07-05 14:07:20 【问题描述】:

我使用 App Developer Library 中的Reachability 来检查互联网连接,代码如下:

+(BOOL)reachable 
Reachability *r = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [r currentReachabilityStatus];

Reachability *r1 = [Reachability reachabilityForLocalWiFi];
NetworkStatus internetStatus1 = [r1 currentReachabilityStatus];

Reachability *r2 = [Reachability reachabilityWithHostName:FTPURL];
NetworkStatus internetStatus2 = [r2 currentReachabilityStatus];

DLog(@"%d,%d,%d",internetStatus,internetStatus1,internetStatus2);

if(internetStatus != NotReachable && internetStatus1 != NotReachable && internetStatus2 != NotReachable) 

    return YES;


return NO;

如果wifi可用,这三个状态肯定是“Reachable”。如果我手动关闭 wifi(网络连接标志关闭),这三个状态都是“不可访问”。

当我关闭调制解调器时,同时保持无线路由器打开(网络连接标志打开)。虽然我无法访问互联网,但所有三个状态仍然是“可达”。我想知道为什么会发生这种情况以及如何检测这种 UnReachable 状态?

【问题讨论】:

我也有同样的问题,你找到原因了吗?! 【参考方案1】:

就您的 iPhone 而言,非常小的网络(即您的无线 LAN)和 Internet 之间没有区别。它只能说它与 TCP/IP 网络有连接。它无法判断该网络有多大。

如果您想确定是否可以从任何特定 iPhone 访问您的服务器,您必须尝试连接到它。即使那样,它也可能在您测试连接和发送真实数据之间消失。因此,无论您是否在开始之前测试连接,您仍然必须在数据传输期间优雅地处理连接丢失。您最好不要费心事先检查,而只是假设它在那里并且有很好的代码来处理传输错误。

【讨论】:

以上是关于当我关闭调制解调器同时保持路由器打开时如何检测互联网连接?的主要内容,如果未能解决你的问题,请参考以下文章

Android如何在屏幕关闭/打开时防止webview重新加载?

Cordova/Phonegap - 当我关闭应用程序时存储一个数组(当我重新打开时使用它们)

如何在子表单打开时冻结父表单

我在门打开时遇到问题,然后我正在等待它们关闭

有没有办法在关闭并再次打开时不重新创建表单的实例?

打开时 VIM 和 taglist 坚持文件