SCNetworkReachability работает только для доменных имен? - PullRequest
0 голосов
/ 17 августа 2011

Учитывая API SCNetworkReachability iOS, настроенный следующим образом:

SCNetworkReachabilityRef reachabilityRef = SCNetworkReachabilityCreateWithName(NULL, "example.com");
SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL};
SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context);
SCNetworkReachabilitySetDispatchQueue(reachabilityRef, dispatch_queue);

Это хорошо работает, если я настрою его с помощью доменного имени, как в примере выше. Однако, если я настрою его с IP-адресом, обратный вызов никогда не будет вызван.

Кто-нибудь может подтвердить, что это ожидаемое поведение API SCNetworkReachability? Если так, какие-либо подсказки, почему?

Ответы [ 2 ]

1 голос
/ 16 июня 2013

Используйте eppz!reachability, который также хорошо работает с IP-адресами. Простое использование как:

// Get status on-demand.
[EPPZReachability reachHost:@"eppz.eu"
               completition:^(EPPZReachability *reachability)
{
    if (reachability.reachable) [self postSomething];
}];

Это правда. Он не будет работать ни с SCNetworkReachabilityCreateWithAddress (на самом деле он работает при будущих изменениях условий достижимости, но первый обратный вызов никогда не вызывается).

Если для проектирования требуется только проверка доступности по требованию , рассмотрите возможность использования SCNetworkReachabilityGetFlags.

Еще немного по адресу: Почему не работает асинхронная достижимость с IP-адресом? и Доступность с блоками для повседневного использования

1 голос
/ 17 августа 2011

Попробуйте использовать SCNetworkReachabilityCreateWithAddress вместо SCNetworkReachabilityCreateWithName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...