AFNetworking在swift中对IP地址的可达性 - 始终匹配一般可达性?

时间:2016-02-11 11:47:10

标签: ios swift afnetworking afnetworking-3

我需要帮助理解为什么我会看到以下内容。

iOS9.x上的

AFNetworking 3.0.4

如果我使用

获取可访问性管理器
AFNetworkReachabilityManager.sharedManager()

然后添加一个setReachabilityStatusChangeBlock然后我得到了我期望的结果。

  • 飞行模式:NotReachable
  • WiFi关闭:ReachableViaWWAN
  • WiFi on:ReachableViaWiFi

所以 - 一般情况都按预期工作。

但我想更准确一点 - 我们知道我们正在谈论什么IP地址,所以我想改用managerForAddress。这是我从网上发货的代码(大多数示例都是obj-c不是swift) - 在下面 - ip是一个地址字符串(点缀四边形):

let isLittleEndian = Int(OSHostByteOrder()) == OSLittleEndian

let htons  = isLittleEndian ? _OSSwapInt16 : { $0 }

var address = sockaddr_in()
address.sin_len = UInt8(sizeofValue(address))
address.sin_family = sa_family_t(AF_INET)
address.sin_port = htons(443);
address.sin_addr.s_addr = inet_addr(ip);

addressReachability = withUnsafePointer(&address) {
    AFNetworkReachabilityManager(forAddress: UnsafePointer($0))
}

然后我可以将setReachabilityStatusChangeBlock添加到此管理器并开始监视。

现在 - 我发送的IP并不重要 - 空字符串,443正在侦听的有效IP地址,443未侦听的有效IP地址,无效的IP地址 - 结果与此完全匹配共享管理器 - 如果我在wifi上 - 那么它是ReachableViaWiFi,如果我只在4G上,那么它是ReachableViaWWAN,如果我在飞行模式下它是NotReachable

所以 - 或者我完全误解了managerForAddress是如何使用的,或者我有代码错误:)在任何一种情况下,我都喜欢听到我误解/出错的地方。

0 个答案:

没有答案