1

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

我的问题是

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

以下是我的代码:

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");
}
4

1 回答 1

0

值得一提的是,这些标志在SCNetworkReachability Reference中定义。正如您将看到的,这些是按位标志,因此“2”表示仅kSCNetworkReachabilityFlagsReachable设置,而“3”表示同时设置和kSCNetworkReachabilityFlagsTransientConnection设置。

于 2013-04-26T00:45:18.210 回答