檢查IPhone網絡鏈接狀態

 將解壓後的文件導入到項目中:
 
執行程序:
//
//  NetWorkStata.h
//  SnowPro
//
//  Created by Lcjiang478 on 12-9-12.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
//
//  NetWorkStata.m
//  SnowPro
//
//  Created by Lcjiang478 on 12-9-12.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "NetWorkStata.h"

#import <SystemConfiguration/SystemConfiguration.h> 
 // 須要事先導入SystemConfiguration.framework

#import <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>

@implementation NetWorkStata


+ (BOOL) connectedToNetwork
{
    
    //建立零地址,0.0.0.0的地址表示查詢本機的網絡鏈接狀態
    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;  
}@end 

#import <Foundation/Foundation.h> interface NetWorkStata : NSObject + (BOOL) connectedToNetwork;@end
 
相關文章
相關標籤/搜索