2014-03-12 33 views
2

我使用Stackmob SDK(即將結束),我假設他們使用AFNetworking來達到可達性。如果設備被連接到被從互聯網上斷開連接WiFi網絡,可達性檢查將是積極的,下面的語句將是正確的:關於斷開WiFi網絡的可達性

if ([self.appDelegate.client.networkMonitor currentNetworkStatus] == SMNetworkStatusReachable) { 
    // reachable 
} 

我如何微調這張支票克服目前的限制嗎?如何在此if語句中檢查真正的網絡可達性,還是有更好的可達性檢查?

+1

它連接到網絡 - 所以它沒有說謊。在你的情況下,你可以檢查與某個主機的連接。 –

+0

好的,你會推薦什麼樣的檢查?謝謝。 –

+0

這應該有所幫助:http://stackoverflow.com/a/3597085/653513 –

回答

4

如果您的問題是「我可以向該主機發送數據並收到回覆」,那麼可達性只能回答「不」或「可能」。它不能回答「是」,因爲可達性沒有檢查許多連接因素。

可達性僅檢查第一跳。它將可達性定義爲數據包在主機方向離開設備的能力。如果設備連接到聲稱能夠路由到該主機的網絡,則可達性得到滿足。如果路由器在撒謊或主機停機或者堪薩斯州有不友好的反剷挖土機,那麼Reachability的結果將是樂觀的。

回答「我可以向該主機發送數據並接收響應」這個問題的唯一可靠方法是實際嘗試向該主機發送數據並接收響應。當連接絕對不可用時,可達性可以幫助您放棄。如果您嘗試失敗,Reachability的網絡變更通知可以幫助您決定何時再次嘗試而不浪費權力。