iOS开发-关于网络状态的判断

摘要:
在判断网络状态时,苹果提供了一个名为Reachability的第三方库,但这个库无法真正检测我们的网络状态。我在调试程序时也发现了它。因为[RreachabilityreachabilibilityWithHostName:]是完全无用的,所以我向Reachability添加了以下代码。m文件作为可访问性的成员函数,并将声明添加到。h文件,代码如下:+connectedToNetWork{structsockaddr_intzeroAddress;bzero;zeroAddress.sin_len=sizeof;zeroAddress.sin_family=AF_INET;SCNetworkReachabilityRefdefaultRouteReachabilibility=SCNetworkReachabilityCreateWithAddress;SCNetworkReachabilityFlagsflags;BOOLdidRetrieveFlags=SCNetworkReachabilityGetFlags;CFRelease;if(!

  在判断网络状态这个问题上,苹果提供了一个叫Reachability的第三方库,但是这个库并不能真正的检测我们的网络状态,我也是在调试程序的时候发现的。详情可以阅读这个博客http://blog.csdn.net/openglnewbee/article/details/50705146

  但是我并没有使用上面博客的方法,而是使用另外一种方法。

  因为[Reachability reachabilityWithHostName:]完全没用,所以我把以下代码作为Reachablity类的成员函数添加到Reachability.m文件,并且在.h文件加上声明方便调用,代码如下:

+ (BOOL)connectedToNetWork {
    struct sockaddr_in zeroAddress;
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.sin_len = sizeof(zeroAddress);
    zeroAddress.sin_family = AF_INET;
    SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    SCNetworkReachabilityFlags flags;
    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    CFRelease(defaultRouteReachability);
    if (!didRetrieveFlags) {
        printf("Error. Count not recover network reachability flags/n");
        return NO;
    }
    BOOL isReachable = flags & kSCNetworkFlagsReachable;
    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
    return (isReachable && !needsConnection) ? YES : NO;
}
上述代码也有局限,只能判断网络是否连通而无法确定具体的连通方式,不过对于我的需求来说已经够了。

免责声明:文章转载自《iOS开发-关于网络状态的判断》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XShell的安装和使用Ubuntu16.04 同时连接无线网络和以太网端口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux od命令详解

Linux od命令 Linux od命令用于输出文件内容。od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来 将指定文件以八进制形式(默认)转储到标准输出。如果指定了多于一个的文件参数,程序会自动将输入的内容整合为列表并以同样的形式输出。如果没有指定文件,或指定文件为"-",程序从标准输入读取数据。 用法: od [选项]... [文件]....

iOS开发——远程消息推送的实现

       在我们使用App的过程中。总是会收到非常多的消息推送。今天我们就要来实现这个功能。首先消息推送分为本地消息推送和远程消息推送。而当中又以远程消息最为经常使用。 可是在推送远程消息之前。有两个前提条件。你须要购买苹果的开发人员账号,也就是每年99刀;而且有一台iOS真机(模拟器不能測试推送)。事实上远程推送须要有server,可是我们自己临时...

iOS证书详解--转载

一、成员介绍1.    Certification(证书)证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种:1)    Developer Certification(开发证书)安装在电脑上提供权限:开发人员通过设备进行真机测试。可以生成副本供多台电脑安装;2)      Distribution Certification(发布证书)安装在电脑...

iOS开发——面试篇&面试总结(五)取消GCD任务

取消GCD任务 在NSOperationQueue中,我们可以随时取消已经设定要准备执行的任务(当然,已经开始的任务就无法阻止了),而GCD没法停止已经加入queue的block(其实是有的,但需要许多复杂的代码);GCD原生并不支持取消操作。 
dispatch_suspend函数也只能暂停开启新的未执行的block,已经处于执行中的block是无法暂停...

深度解析C语言中的sizeof

1)解析C语言中的sizeof 一、sizeof的概念  sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法  1、用于数据类型   sizeof使用形式:...

iOS开发UI篇—多控制器和导航控制器简单介绍

iOS开发UI篇—多控制器和导航控制器简单介绍 一、多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单。当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如此,用1个控制器去管理其他多个控制器 比如,用一个控制器A去管理3个控制器B、C、D...