首页 文章

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

提问于
浏览
2

我使用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可用,则三种状态肯定是“可到达” . 如果我手动关闭wifi(网络连接标志关闭),则所有三种状态都是“NOTReachable” .

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

1 回答

  • 1

    对于非常小的网络(即无线局域网)和互联网,您的iPhone没有区别 . 它可以肯定地说它与TCP / IP网络有连接 . 它无法分辨出网络有多大 .

    如果您想确定您的服务器是否可以从任何特定的iPhone访问,您必须尝试连接到它 . 即便如此,它可能会在您测试连接和发送实际数据之间消失 . 因此,无论您是在开始之前测试连接,还是必须在数据传输过程中优雅地处理连接丢失 . 您也可以不提前检查,只是假设它在那里并且有良好的代码来处理传输错误 .

相关问题