首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于ipv6支持的iOS可达类

用于ipv6支持的iOS可达类
EN

Stack Overflow用户
提问于 2016-01-25 17:21:03
回答 1查看 1.1K关注 0票数 4

我在我的应用程序中使用可达性类来监控网络state.The以下是从苹果可达性样本中检查互联网可达性的代码。它可以很好地与IPv4网络配合使用。但它在IPv6 wifi网络上失败了。


代码语言:javascript
复制
+ (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时,如下所示。
*

代码语言:javascript
复制
        struct sockaddr_in6 zeroAddress;
        bzero(&zeroAddress, sizeof(zeroAddress));
        zeroAddress.sin6_len = sizeof(zeroAddress);
        zeroAddress.sin6_family = AF_INET6;
        return [self reachabilityWithAddress: &zeroAddress];

对于IPv4和IPv6wifi网络,上述IPv6支持代码在iOS9和更高版本的设备中都能很好地工作。但在iOS8设备上,它无法支持IPV4网络。那么,苹果的可达性代码是否也支持IPV6网络的更新。
如有任何帮助,我们将不胜感激。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-06-21 15:59:30

我认为如果你替换为下面的代码,那么它将为你工作。

代码语言:javascript
复制
+(Reachability*)reachabilityWithHostName:(NSString*)hostname
{
   return [Reachability reachabilityWithHostname:hostname];
}

再来一张

代码语言:javascript
复制
+(Reachability*)reachabilityWithHostname:(NSString*)hostname
{
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithName(NULL, [hostname UTF8String]);
if (ref) 
{
    id reachability = [[self alloc] initWithReachabilityRef:ref];

    return reachability;
}

return nil;
}

使用初始化可达类您可以使用google.com作为域名来检查internet连接。

代码语言:javascript
复制
  Reachability *r = [Reachability reachabilityForInternetConnection:@"your domain here"];

我希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34988920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档