当主机同时具有IPv6和IPv4地址时,SCNetworkReachability的问题将起作用

时间:2012-06-09 23:12:57

标签: objective-c ios macos ipv6 reachability

我为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

0 个答案:

没有答案