Проверьте, включен ли хост в iOS SDK - PullRequest
1 голос
/ 09 сентября 2011

Я делаю приложение для iOS, в котором мне нужно было бы проверить, доступен ли хост, например, google.com (или вверх / вниз). Я использовал этот код:

NSString *host = theTextField.text;
        bool success = false;
        const char *host_name = [host
                                 cStringUsingEncoding:NSASCIIStringEncoding];

        SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
                                                                                    host_name);
        SCNetworkReachabilityFlags flags;
        success = SCNetworkReachabilityGetFlags(reachability, &flags);
        bool isAvailable = success && (flags & kSCNetworkFlagsReachable) && 
        !(flags & kSCNetworkFlagsConnectionRequired);
        if (isAvailable) {

            status.text = @"The host is up! :)";

        } else {
            status.text = @"The host is down! :(";
        }

    }

Но у меня такое чувство, что оно не работает так, как должно. Например, если я ввожу google.com, он говорит, что он работает, хорошо, но если я ввожу URL моей веб-страницы (которая не работает в банкомате), он также говорит, что он работает (адрес zad0xsis.net). Если я ввожу фальшивый адрес, он говорит, что он не работает, поэтому он может работать правильно, и я могу думать о странных вещах IDK.

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

Вы пробовали ping zad0xsis.net с терминала?Если вы получите успешный ответ, то я верю, что речь идет о сетевых вещах, которые мне совсем не нравятся.

0 голосов
/ 09 сентября 2011

zad0xsis.net для меня.

Reachability использует тот же принцип, что и командная строка ping (DNS Resolution + Ping фактически).

Я думаю, вы должны использовать NSURLConnection , чтобы проверить, работает ли веб-сервер.

...