iphone 测试网络链接

有时候我们需要知道手机是否已经链接网络,,或者是链接的网络的类型。。。可以这么做:

(一) 是否链接网络:

需要导入SystemConfiguration.framework

#import <netdb.h>
#import <SystemConfiguration/SCNetworkReachability.h>

//定义internet的套接字地址 一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。
    struct sockaddr_in zeroAddress;
    //将zeroAddress置零
	bzero(&zeroAddress, sizeof(zeroAddress));
	zeroAddress.sin_len = sizeof(zeroAddress);
	zeroAddress.sin_family = AF_INET; //主机字节序
    
    //创建链接测试  第二个参数是链接的ip地址
	SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    //网络可达性标志
	SCNetworkReachabilityFlags flags;
	
    //测试可达性标志可不可用
    
	BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
	CFRelease(defaultRouteReachability);
	
	if (!didRetrieveFlags) {
		printf("Error. Count not recover network reachability flags\n");
	}
	//
	BOOL isReachable = flags & kSCNetworkFlagsReachable;
	BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
    
    NSString *result;
	if ((isReachable && !needsConnection) ? YES : NO) {
		result = @"Connection Successed!!!";
	}else {
		result = @"Connection Faild!!!";
	}
	UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"TestConnection" 
                                                    message:result
												   delegate:self
										  cancelButtonTitle:@"OK,I Know" 
                                          otherButtonTitles:nil];
	[alert show];

 (二) 网络链接的类型:

NSString *connectionKind;
    // 测试连接可用性
    Reachability *hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"];
	// 判断连接类型
    switch ([hostReach currentReachabilityStatus]) {
		case NotReachable:
			connectionKind = @"没有网络链接";
			break;
		case ReachableViaWiFi:
			connectionKind = @"当前使用的网络类型是WIFI";
			break;
		case ReachableViaWWAN:
			connectionKind = @"当前使用的网络链接类型是WWAN(3G)";
			break;
		default:
			break;
	}
	
	UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络链接类型" 
                                                    message:connectionKind
												   delegate:self
										  cancelButtonTitle:@"知道了,谢谢" 
                                          otherButtonTitles:nil];
	[alert show];

 基本的需要已经满足。。。。

有好的建议希望回复。。。。

 

猜你喜欢

转载自751401909.iteye.com/blog/1750242