iOS判断是否有网络

来源:互联网 发布:vb.net mediaplayer 编辑:程序博客网 时间:2024/04/28 03:55


/// 判断是否有网络

- (BOOL)checkIsHasNetworkFunction

{
    // 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)checkIsHasNetwork
{
    BOOL isHasNetwork = [[PublicFunction sharedFunctionManager] checkIsHasNetworkFunction];
    if (isHasNetwork == NO) {
        [self showHudViewLabelText:@"无网络连接" detailsLabelText:nil afterDelay:kAfterDelayTime];
    }
    return isHasNetwork;
}

0 0