iOS 检查网络状态是否可用

来源:互联网 发布:知乎的商业模式 编辑:程序博客网 时间:2024/06/06 02:54
代码:
+ (BOOL) checkNetworkIsValid {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) {return NO;}BOOL isReachable = flags & kSCNetworkFlagsReachable;BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;// = flags & kSCNetworkReachabilityFlagsIsWWAN;BOOL nonWifi = flags & kSCNetworkReachabilityFlagsTransientConnection;BOOL moveNet = flags & kSCNetworkReachabilityFlagsIsWWAN;return ((isReachable && !needsConnection) || nonWifi || moveNet) ? YES : NO;}

原创粉丝点击