返回的每个标志中的数字的重要性 - SCNetworkReachabilityFlags

时间:2013-03-21 21:17:03

标签: ios ipad vpn reachability

我正在尝试以编程方式检查iOS应用内的iPad中的VPN连接是打开还是关闭。 以下代码总是说我的组织中的给定主机始终可以访问 即使iPad中的VPN连接已关闭。但是当我打印使用“SCNetworkReachabilityGetFlags”api获得的标志时,它显示了VPN off和VPN on之间的区别。每当VPN连接时,标志打印“3”,当VPN关闭时,标志打印“2”。

我的问题是

  1. 我可以使用此标志来确定VPN连接吗?
  2. 这些数字有什么意义?
  3. 任何人都可以向我提供有关这些旗帜的更多信息吗?
  4. 以下是我的代码:

    bool success = false;
    
    const char *host_name = [@"<<host name here>>"
                             cStringUsingEncoding:NSASCIIStringEncoding];
    
    SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
                                                                                host_name);
    SCNetworkReachabilityFlags flags;
    success = SCNetworkReachabilityGetFlags(reachability, &flags);
    NSLog(@"success=%d",flags);
    bool isAvailable = success && (flags & kSCNetworkFlagsReachable) &&
    !(flags & kSCNetworkFlagsConnectionRequired);
    if (isAvailable) {
        NSLog(@"Host is reachable: %d", flags);
    }else{
        NSLog(@"Host is unreachable");
    }
    

1 个答案:

答案 0 :(得分:0)

对于它的价值,这些标志在SCNetworkReachability Reference中定义。如您所见,这些是按位标志,因此“2”表示仅设置kSCNetworkReachabilityFlagsReachable,而“3”表示设置了kSCNetworkReachabilityFlagsTransientConnection