//
// 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