Значение числа в каждом возвращаемом флаге — SCNetworkReachabilityFlags

Я пытаюсь проверить, включено или выключено подключение VPN на iPad внутри приложения iOS программно. В приведенном ниже коде всегда говорится, что данный хост в моей организации всегда доступен, даже если на iPad отключено VPN-подключение. Но когда я напечатал флаг, полученный с помощью API «SCNetworkReachabilityGetFlags», он показал разницу между включенным и выключенным 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");
}

person Ashok Ambrose    schedule 21.03.2013    source источник


Ответы (1)


Эти флаги определены в Справочник по SCNetworkReachability. Как вы увидите, это побитовые флаги, поэтому «2» означает, что установлено только kSCNetworkReachabilityFlagsReachable, тогда как «3» означает, что установлены и это, и kSCNetworkReachabilityFlagsTransientConnection.

person Rob    schedule 26.04.2013