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

IOS 检测网络链接是否可用 - 3

2013-06-26 15:15 267 查看
在上面两篇中介绍了如何获取网络状态与sock的简单介绍,到此大概对socket有一点了解,下面介绍ios的

SCNetworkReachability类的应用,在IOS中SystemConfiguration框架包含联网相关的函数,可以检查网络连接状态。在

SCNetworkReachability.h定义测试网络连接状态的函数,具体看下面:

一:创建测试网络引用
(1)SCNetworkReachabilityRef SCNetworkReachabilityCreateWithAddress
( //根据传入的地址创建网络连接引用

CFAllocatorRef allocator, //可以为NULL或kCFAllocatorDefault

const struct sockaddr *address //需要测试连接的IP地址

);

注意:当address为0.0.0.0时则可以查询本机的网络连接状态。同时返回一个引用必须在用完后释放。
(2)SCNetworkReachabilityRef SCNetworkReachabilityCreateWithName
( //根据传入的网址创建网络连接引用

CFAllocatorRef allocator,//可以为NULL或kCFAllocatorDefault

const char *nodename//比如为"www.baidu.com",此参数为域名

);

注意:当address为0.0.0.0时则可以查询本机的网络连接状态。同时返回一个引用必须在用完后释放。

释放用 CFRelease(SCNetworkReachabilityRef
ref );

二:获取网络连接状态(是否存在网络连接):

Boolean SCNetworkReachabilityGetFlags ( //用来获得网络连接的状态

SCNetworkReachabilityRef target,//之前建立的网络连接的引用

SCNetworkReachabilityFlags *flags//保存确定连接是否获得的状态

);

SCNetworkReachabilityFlags:保存返回的测试连接状态

其中常用的状态有:

kSCNetworkReachabilityFlagsReachable:能够连接网络

kSCNetworkReachabilityFlagsConnectionRequired:能够连接网络,但是首先得建立连接过程

kSCNetworkReachabilityFlagsIsWWAN:判断是否通过蜂窝网覆盖的连接,比如EDGE,GPRS或者目前的3G.主要是区别通过WiFi的连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: