检测包丢失

时间:2016-03-10 10:26:15

标签: ios swift

对于检测互联网连接,我使用简单的类:

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")
            }

但这对我来说还不够......这是否有可能检测到包丢失或其他什么。因为当我模拟这种联系时:

enter image description here

我得错了结果。在我的应用程序中。

1 个答案:

答案 0 :(得分:1)

可达性不受丢失数据包的影响。这可以被认为是暂时丢失数据包而不是根本没有网络连接。可达性是关于您的3G,WiFi或Mac以太网打开,而不是连接质量。因此,这些结果并没有错,而是有意的。