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;
}
先判断是否连接到互联网,再用上面的方法判断网络的类型
相关文章推荐
- 网络营销风生水起,传统营销又将走向何方?
- Cadence 16.6 生成网络报错: Error initializing COM property pages: Invalid pointer
- http协议
- Linux下SVN服务器同时支持Apache的http和svnserve独立服务器两种模式且使用相同的访问权限账号
- 什么是网络资源管理?
- 单机tcp并发连接
- TCP协议知识点总结
- hdu 4940 Destroy Transportation system( 无源汇上下界网络流的可行流判断 )
- 深入浅出TCP之send和recv
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- TCP协议过程详解
- nginx配置https
- java--网络编程
- 苦逼的光网络终获新生:数据中心互联市场去年超25亿美元
- SQL SERVER HTTP请求
- GET 和 POST (HTTP请求报文和HTTP响应报文)
- Android 网络通信框架Volley简介(Google IO 2013)
- 基本网络请求
- Horizon View 网络配置要点
- Java aio(异步网络IO)初探