我正在尝试以编程方式检查iOS应用内的iPad中的VPN连接是打开还是关闭。 以下代码总是说我的组织中的给定主机始终可以访问 即使iPad中的VPN连接已关闭。但是当我打印使用“SCNetworkReachabilityGetFlags”api获得的标志时,它显示了VPN off和VPN on之间的区别。每当VPN连接时,标志打印“3”,当VPN关闭时,标志打印“2”。
我的问题是
以下是我的代码:
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");
}
答案 0 :(得分:0)
对于它的价值,这些标志在SCNetworkReachability Reference中定义。如您所见,这些是按位标志,因此“2”表示仅设置kSCNetworkReachabilityFlagsReachable
,而“3”表示设置了kSCNetworkReachabilityFlagsTransientConnection
。