检查iOS SDK上是否有主机

时间:2011-09-09 08:39:10

标签: ios cocoa-touch host

我正在创建一个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它就说明了,好吧,但是如果我输入我的网页的网址(这是自动取款机),它说它也是(地址是zad0xsis.net)。如果我输入一个假地址,它说它已经失效,所以它可能正常工作,我可能会想到IDK的奇怪之处。

2 个答案:

答案 0 :(得分:0)

zad0xsis.net适合我。

Reachability使用与ping命令行相同的原则(事实上DNS解析+ Ping)。

我认为您应该使用NSURLConnection来查看网络服务器是否已启动。

答案 1 :(得分:0)

您是否尝试过终端的ping zad0xsis.net?如果你收到一个成功的回复,那么我相信它是关于一些我不擅长的网络东西。