zoukankan      html  css  js  c++  java
  • iphone判断当前网络连接类型

    ​Reachability只能区分出无网络、wifi和wwan(2G&2.5G&3G)类型的网络连接类型,只需重构networkStatusForFlags方法,即可详细区分出2G与3G网络 ​

    1. [代码][C/C++]代码     
    //Reachability.m 中 networkStatusForFlags 方法重构
    - (NetworkStatus) networkStatusForFlags: (SCNetworkReachabilityFlags) flags
    {
    if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
    {
    return NotReachable;
    }
        
    BOOL retVal = NotReachable;

    if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)
    {http://www.huiyi8.com/jiaoben/​
    // if target host is reachable and no connection is required
    //  then we'll assume (for now) that your on Wi-Fi
    retVal = ReachableViaWiFi;
    }


    if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) ||
             (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0))
    {
            // ... and the connection is on-demand (or on-traffic) if the
            //     calling application is using the CFSocketStream or higher APIs
            if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
            {jquery特效
                // ... and no [user] intervention is needed
                retVal = ReachableViaWiFi;
            }
        }
        
        if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
    {
            if((flags & kSCNetworkReachabilityFlagsReachable) == kSCNetworkReachabilityFlagsReachable) {
                if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection) {
                    retVal = ReachableVia3G;
                    if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired) {
                        retVal = ReachableVia2G;
                    }
                }
            }
    }
    return retVal;
    }


    //检查当前网络连接是否正常
    -(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 ");
    return NO;
    }

    BOOL isReachable = flags & kSCNetworkFlagsReachable;
    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
    return (isReachable && !needsConnection) ? YES : NO;
    }


    //检查网络连接类型
    -(void)checkNetworktype:(id)sender{
        NSString *connectionKind;
        if ([self connectedToNetWork]) {
    hostReach = [Reachability reachabilityWithHostName:@"www.google.com"];
            switch ([hostReach currentReachabilityStatus]) {
                case NotReachable:
                    connectionKind = @"没有网络链接";
                    break;
                case ReachableViaWiFi:
                    connectionKind = @"当前使用的网络类型是WIFI";
                    break;
                case ReachableVia3G:
                    connectionKind = @"当前使用的网络链接类型是WWAN(3G)";
                    break;
                case ReachableVia2G:
                    connectionKind = @"当前使用的网络链接类型是WWAN(2G)";
                    break;    
                default:
                    break;
            }
    }else {
    connectionKind = @"没有网络链接";
    }
    }

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/xkzy/p/3810817.html
Copyright © 2011-2022 走看看