您现在的位置: 万盛学电脑网 >> 网络安全 >> 网络基础知识 >> 正文

快速检查网络连接(转载)

作者:佚名    责任编辑:admin    更新时间:2022-06-22

快速检查网络连接(转载)

转载自:?mod=viewthread&tid=31724


#import <sys/socket.h>

#import <netinet/in.h>
#import <arpa/inet.h>
#import <netdb.h>
#import <SystemConfiguration/SCNetworkReachability.h>
//Snip, you know we're in the implementation...
- (BOOL) connectedToNetwork
{
        // 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)
        {
                return NO;
        }
 
        BOOL isReachable = flags & kSCNetworkFlagsReachable;
        BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
        return (isReachable && !needsConnection) ? YES : NO;
}
 
//call like:
-(void) start {
        if (![self connectedToNetwork]) {
                UIAlertView *alert = [[UIAlertView alloc] 
                         initWithTitle:@"Network Connection Error" 
                         message:@"You need to be connected to the internet to use this feature." 
                         delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alert show];
                [alert release];
        } else {
             //do something 
        }
}

  • 上一篇iphone开发常用代码(转载)
  • 下一篇UINavigationController 直接pop到指定controllerView的方法(转载)