zoukankan      html  css  js  c++  java
  • iOS开发-关于网络状态的判断

      在判断网络状态这个问题上,苹果提供了一个叫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;
    }
    上述代码也有局限,只能判断网络是否连通而无法确定具体的连通方式,不过对于我的需求来说已经够了。
  • 相关阅读:
    线程同步
    毕业答辩
    论文查重
    shell无名管道线的实现(父子进程实现对管道的一端读另一端写)
    并查集
    操作系统中的fork()函数对应的进程创建过程
    柠檬水找零问题
    环形链表
    删除排序数组中的重复项
    关于两数之和的算法
  • 原文地址:https://www.cnblogs.com/jierism/p/6010651.html
Copyright © 2011-2022 走看看