gpt4 book ai didi

ipv6 - 用于 ipv6 支持的 iOS 可访问性类别

转载 作者:行者123 更新时间:2023-12-01 20:16:04 25 4
gpt4 key购买 nike

我在应用程序中使用可达性类来监视网络状态。以下是从 Apple 可达性示例中检查互联网可达性的代码。它适用于 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 网络失败。 Apple 的可达性代码是否有任何更新以支持 IPV6 网络?任何帮助,将不胜感激。提前致谢。

最佳答案

我认为如果您替换为以下代码,那么它将适合您。

+(Reachability*)reachabilityWithHostName:(NSString*)hostname
{
return [Reachability reachabilityWithHostname:hostname];
}

还有一个

+(Reachability*)reachabilityWithHostname:(NSString*)hostname
{
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithName(NULL, [hostname UTF8String]);
if (ref)
{
id reachability = [[self alloc] initWithReachabilityRef:ref];

return reachability;
}

return nil;
}

初始化可达性类您可以使用“google.com”作为域名来检查互联网连接。

  Reachability *r = [Reachability reachabilityForInternetConnection:@"your domain here"];

希望这对您有帮助。

关于ipv6 - 用于 ipv6 支持的 iOS 可访问性类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34988920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com