約可達許多問題,但沒有人似乎我做的問題... 正如許多例子表明我以這種方式使用的可達性:可達回報舉辦可達即使主機名是不存在的
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
hostReach = [[Reachability reachabilityWithHostName: @"www.google.com"] retain];
[hostReach startNotifier];
[self updateInterfaceWithReachability: hostReach];
這工作得很好。但是,如果我將主機名更改爲不存在的主機名,例如www.nonexistanthostforsure.com,則可達性仍然可以與主機聯繫。現在,閱讀蘋果文檔,我的印象是,可達性無法告訴我主機(服務器)是否在線。在這種情況下,結果是有道理的,但問題是爲什麼要打擾主機名呢?
感謝您的回答。我似乎無法找到可靠的東西來檢查服務器是否在線。我試過: NSURLResponse * response = nil; NSError * error = nil; NSData * data = nil; NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:@「http://www.nonexistantserver.com/」]]; data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 但即使這不返回錯誤,返回的數據和響應不是零! 必須有可靠的東西來檢查服務器是否打開。 – user1219880 2012-02-20 01:47:35
有一個更可靠的版本的可達性代碼[here](http://blog.ddg.com/?p=24) – darvids0n 2012-02-20 03:03:48
再次感謝您試圖幫助我。不過,我仍然有同樣的問題。即使您建議的可達性版本也無法滿足我的需求 - 能夠判斷我的服務器是否啓動!並且我發佈在我以前的評論中的代碼也沒有幫助(NSURLConnection),因爲它甚至在我使用非存在的服務器時也不會失敗。任何人都可以幫忙嗎? – user1219880 2012-02-25 18:45:43