2011-05-25 51 views

回答

5

看一看蘋果的可達性和類this example app

+0

那樣比較簡單: – Maxime 2011-05-25 19:26:54

+0

@Maxime哪一個? – 2011-05-25 19:28:35

2

你應該嘗試用你認爲合適的超時連接到服務器。在您確定連接嘗試失敗之前,不要使用可訪問性API,即使這樣,只有在您從NSURLConnection et。人。是一個暗示你沒有連接到網絡。在這種情況下,使用Reachability API來確定何時應該再次嘗試。

僅嘗試連接可能會導致以前不可用的網絡接口。

+0

這個答案需要強調。可達性有很多限制,並不完全可靠。在沒有連接的情況下,在網絡連接波動的某些情況下,它可以返回true。唯一真正可靠的方法是在實際通信嘗試後真正處理失敗。事先檢查並假定它在此期間不能改變是未處理故障的處方。 – 2015-06-29 09:26:09

1

您可以迅速使用下面的代碼檢查互聯網連接:

import SystemConfiguration 

class Reachability: NSObject { 

class func isConnectedToNetwork() -> Bool { 
    var zeroAddress = sockaddr_in() 
    zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress)) 
    zeroAddress.sin_family = sa_family_t(AF_INET) 
    let defaultRouteReachability = withUnsafePointer(&zeroAddress) { 
     SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)) 
    } 
    var flags = SCNetworkReachabilityFlags() 
    if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) { 
     return false 
    } 
    let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0 
    let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0 
    return (isReachable && !needsConnection) 
} 

希望這有助於!