2

我为 iOS 编写了一个网络客户端,它使用该SCNetworkReachabilityCreateWithName()功能来启动对远程主机可用性的监控。如果远程主机只有 IPv4 地址或只有 IPv6 地址,这将非常有效。

当客户端在仅 IPv4 的网络上并且正在监视同时具有 IPv4 地址和 IPv6 地址的主机时,就会出现问题。客户端将监视远程主机的 IPv6 地址,并指示主机不可用,即使 IPv4 地址可达。

如果 IPv6 网络不可用,我已经搜索并且无法找到指示 SCNetworkReachability 默认监视 IPv4 地址的方法。

我可以通过以编程方式确定设备的公共 IP 地址、手动解析主机名以及在存在非链接本地 IPv6 地址时使用 IPv4 地址来解决此问题,但是我希望有人有更简单的解决方案。

由于 iOS 和 OS X 的功能相同,因此此问题也会影响 OS X 客户端。

我的具体实现是我的 BKNetworkReachability 类的 .m 和 .h 文件: https ://github.com/bindle/BindleKit/tree/master/BindleKit/controllers

4

0 回答 0