SunRaIN_ 发表于 2013-1-30 20:20:41

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]
查看完整版本: iphone 测试网络链接