iphone 测试网络链接
有时候我们需要知道手机是否已经链接网络,,或者是链接的网络的类型。。。可以这么做:(一) 是否链接网络:
//定义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 = [ initWithTitle:@"TestConnection" message:result delegate:selfcancelButtonTitle:@"OK,I Know" otherButtonTitles:nil];; (二) 网络链接的类型:
NSString *connectionKind; // 测试连接可用性 Reachability *hostReach = ;// 判断连接类型 switch () {case NotReachable:connectionKind = @"没有网络链接";break;case ReachableViaWiFi:connectionKind = @"当前使用的网络类型是WIFI";break;case ReachableViaWWAN:connectionKind = @"当前使用的网络链接类型是WWAN(3G)";break;default:break;}UIAlertView *alert = [ initWithTitle:@"网络链接类型" message:connectionKind delegate:selfcancelButtonTitle:@"知道了,谢谢" otherButtonTitles:nil];; 基本的需要已经满足。。。。
有好的建议希望回复。。。。
页:
[1]