IOS开发之查看网络链接是否可用-----第三讲

上面两讲我们讲解了如何获取网络状态与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的连接。

你可能感兴趣的:(ios,socket,网络,struct,测试,null)