2011-09-09 32 views
1

我正在製作一個iOS應用程序,我需要檢查主機(例如google.com)是否可用(或正在運行/正在運行)。我一直在使用這段代碼:檢查一個主機是否在iOS SDK上運行

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它表示它已經啓動,但是,如果我輸入我的網頁(這是關閉的ATM)的網址,它說它也一樣(地址是zad0xsis.net)。如果我輸入一個虛假的地址,它說它已關閉,所以它可能正常工作,我可能會考慮奇怪的事情IDK。

+0

您是否已經在http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html查看了Apple的Reachability示例? – Tommy

回答

0

zad0xsis.net適合我。

可達性使用與ping命令行相同的原理(事實上DNS解析+ Ping)。

我想你應該使用NSURLConnection來查看網絡服務器是否啓動。

+0

我知道,使用Reachability代替它,找到了一個更好的方法,謝謝 – pmerino

0

你從碼頭試過ping zad0xsis.net嗎?如果你收到了成功的迴應,那麼我相信它是關於一些我不擅長的網絡工作。

相關問題