iOS 判断当前是否有网络

下面这个方法,可以用于判断当前设备是否打开了网络连接

-(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)  
    {  
        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;  
}

调用该方法的例子:

- (IBAction)testOut:(UIButton *)sender  
{  
    if(![self connectedToNetwork])  
    {  
        UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"温馨提示" message:@"网络连接失败,请查看网络是否连接正常!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];  
        [alert show];  
        [alert release];  
    }  
  
    NSLog(@"testOut Event");  
}

所需的头文件:

#import <Foundation/Foundation.h>  
#import <CommonCrypto/CommonHMAC.h>  
#import <SystemConfiguration/SystemConfiguration.h>  
#import <netdb.h>  
#import <arpa/inet.h>


你可能感兴趣的:(ios,网络判断)