判断网络是否连接的几种方法
2016-11-07 17:31
666 查看
第一种方法:
需要使用Reachability第三方库
第二种方法:
这种方法需要导入以下系统库
第三种方法:
第四种方法:
需要使用Reachability第三方库
- (void)checkInternetConnection { internetReachableFoo = [Reachability reachabilityWithHostname:@"www.baidu.com"]; // Internet is reachable internetReachableFoo.reachableBlock = ^(Reachability*reach){ // Update the UI on the main thread dispatch_async(dispatch_get_main_queue(), ^{ //有网络连接 NSLog(@"thi net is connected!"); }); }; // Internet is not reachable internetReachableFoo.unreachableBlock = ^(Reachability*reach){ // Update the UI on the main thread dispatch_async(dispatch_get_main_queue(), ^{ //无网络连接 NSLog(@"thi net is disconnected"); }); }; [internetReachableFoo startNotifier]; }
第二种方法:
这种方法需要导入以下系统库
#include <netdb.h> #import <SystemConfiguration/SystemConfiguration.h>
/** * 网络是否连通。 * * @return 网络状态枚举值 * @retval YES 网络通畅 * @retval NO 网络不通 */ - (BOOL)isConnectedToNetwork { // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress.sin_family = AF_INET; // Recover reachability flags SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); SCNetworkReachabilityFlags flags; BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); CFRelease(defaultRouteReachability); if (!didRetrieveFlags){ printf("Error. Could not recover network reachability flags\n"); return NO; } BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != 0); BOOL needsConnection = ((flags & kSCNetworkFlagsConnectionRequired) != 0); return (isReachable && !needsConnection) ? YES : NO; }
第三种方法:
//第三种方法 - (BOOL)connected { Reachability *reachability = [Reachability reachabilityForInternetConnection]; NetworkStatus networkStatus = [reachability currentReachabilityStatus]; return networkStatus != NotReachable; }
第四种方法:
-(BOOL)newtworkType { NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews]; NSNumber *dataNetworkItemView = nil; for (id subview in subviews) { if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) { dataNetworkItemView = subview; break; } } switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) { case 0: NSLog(@"No wifi or cellular"); return NO; break; case 1: NSLog(@"2G"); return YES; break; case 2: NSLog(@"3G"); return YES; break; case 3: NSLog(@"4G"); return YES; break; case 4: NSLog(@"LTE"); return YES; break; case 5: NSLog(@"Wifi"); return YES; break; default: break; } return NO; }
相关文章推荐
- Android中判断网络连接是否可用的方法总结
- 判断Android网络是否连接方法
- Linux C语言ping方法判断是否已经连接网络方法
- iOS 判断网络连接状态的几种方法
- 判断网络连接是否正常的方法
- Android编程判断是否连接网络的方法【WiFi及3G判断】
- php判断是否连接上网络的方法实例详解
- 嵌入式设备 以及手机 最新判断网络是否连接成功的最好方法,你值得知道
- 使用JS在浏览器中判断当前网络连接状态的几种方法
- iOS 判断网络连接状态的几种方法
- iOS 判断网络连接状态的几种方法
- 使用JS在浏览器中判断当前网络连接状态的几种方法
- php判断是否连接上网络的方法实例详解
- 判断网络是否可连接的方法
- android中判断是否连接网络的方法
- iOS 判断网络连接状态的几种方法
- PHP判断是否连接上网络的方法
- PHP判断是否连接上网络的方法
- Android编程判断网络连接是否可用的方法
- 判断设备是否有网络连接