对于检测互联网连接,我使用简单的类:
public class Reachability {
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)
}
}
然后在我的代码中检查:
if Reachability.isConnectedToNetwork() == false {
print("error")
}
但这对我来说还不够......这是否有可能检测到包丢失或其他什么。因为当我模拟这种联系时:
我得错了结果。在我的应用程序中。
答案 0 :(得分:1)
可达性不受丢失数据包的影响。这可以被认为是暂时丢失数据包而不是根本没有网络连接。可达性是关于您的3G,WiFi或Mac以太网打开,而不是连接质量。因此,这些结果并没有错,而是有意的。