我在我的应用程序中使用可达性类来监测网络状态。以下是检查互联网可达性的代码,取自苹果公司的可达性示例。它可以很好地处理IPv4网络,但在IPv6 WiFi网络上失败。
+ (instancetype)reachabilityForInternetConnection
{
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
return [self reachabilityWithAddress:&zeroAddress];
}
现在我们正在为应用程序支持IPv6网络进行升级。当我们将这些代码升级以支持IPv6时,如下所示。
struct sockaddr_in6 zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin6_len = sizeof(zeroAddress);
zeroAddress.sin6_family = AF_INET6;
return [self reachabilityWithAddress: &zeroAddress];
上述IPv6支持代码在iOS9及更高版本设备中针对IPv4和IPv6 wifi网络均能正常工作。但是在iOS8设备中,它无法支持IPv4网络。因此,是否有关于苹果的可达性代码的更新可用来支持IPv6网络。
任何帮助将不胜感激。先感谢您的帮助。