我正在尝试以编程方式检查 iOS 应用程序内的 iPad 中的 VPN 连接是打开还是关闭。下面的代码总是表明我组织中的给定主机始终可以访问,即使 iPad 中的 VPN 连接已关闭。但是,当我打印使用“SCNetworkReachabilityGetFlags”api 获得的标志时,它显示 VPN 关闭和 VPN 开启之间存在差异。每当连接 VPN 时,标志打印“3”,当 VPN 关闭时,标志打印“2”。
我的问题是
- 我可以使用这个标志来确定 VPN 连接吗?
- 这些数字有什么意义?
- 任何人都可以向我提供有关这些标志的更多信息吗?
以下是我的代码:
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");
}