您的位置:首页 > 理论基础 > 计算机网络

iOS判断网络连接类型

2015-07-09 15:29 691 查看

有时候应用需要判断网络是否连接,网络连接的类型。可以使用

Reachability *r = [Reachability reachabilityWithHostName:@"www.baidu.com"];

switch ([r currentReachabilityStatus]) {

case NotReachable:

NSLog(@"没有网络");

break;

case ReachableViaWWAN:

NSLog(@"正在使用3G网络");

break;

case ReachableViaWiFi:

NSLog(@"正在使用wifi网络");

break;

}

如果用这种方法判断是否连接网络,在连接了WiFi但WiFi没有连接到互联网时,currentReachabilityStatus会阻塞主线程,直到超时,可以用

-(BOOL)connectedToNetWork

{

struct sockaddr_in zeroAddress;

bzero(&zeroAddress, sizeof(zeroAddress));

zeroAddress.sin_len = sizeof(zeroAddress);

zeroAddress.sin_family = AF_INET;

SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);

SCNetworkReachabilityFlags flags;

BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);

CFRelease(defaultRouteReachability);

if (!didRetrieveFlags) {

NSLog(@"Error. Count not recover network reachability flags");

return NO;

}

BOOL isReachable = flags & kSCNetworkFlagsReachable;

BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;

return (isReachable && !needsConnection) ? YES : NO;

}

先判断是否连接到互联网,再用上面的方法判断网络的类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: