您的位置:首页 > 理论基础 > 计算机网络

获取网络状态

2011-10-10 16:20 363 查看
#import <SystemConfiguration/SystemConfiguration.h>
#import <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
/**********************************************************************
函数名称	: getNetworkState
函数描述 : 获取网络状态,可根据实际情况进行扩充,此处仅判断网络是否可用
输入参数	: N/A
输出参数	: N/A
返回值	: -1:错误(网络状态无法判断) 0:网络中断 1:网络正常
**********************************************************************/
+ (int)getNetworkState
{
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
// 以下objc相关函数、类型需要添加System Configuration 框架
// 用0.0.0.0来判断本机网络状态
SCNetworkReachabilityRef defaultRouteReachability =
SCNetworkReachabilityCreateWithAddress(NULL, (struct
sockaddr*)&zeroAddress);
SCNetworkReachabilityFlags flags;
BOOL didRetrieveFlags
= SCNetworkReachabilityGetFlags(defaultRouteReachability,&flags);
CFRelease(defaultRouteReachability);
if (!didRetrieveFlags)
{
return -1;
}
BOOL isReachable = flags & kSCNetworkFlagsReachable;
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
return (isReachable && !needsConnection) ? 1 : 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: