我使用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 状态?