gpt4 book ai didi

ios - 在基于本地 Mac 的 IPv6 DNS64/NAT64 网络中检查到 0.0.0.0 的可达性时不会发生错误

转载 作者:行者123 更新时间:2023-11-29 12:00:41 24 4
gpt4 key购买 nike

关注本文:your_app_and_next_generation_networks ,在 What Break 段,在基于本地 Mac 的 IPv6 DNS64/NAT64 网络中检查是否可达 0.0.0.0 时会发生错误(您未连接到互联网)

但是,在创建基于本地 Mac 的 IPv6 DNS64/NAT64 网络之后,我尝试通过以下代码检查是否可达 0.0.0.0:

Reachability *reachability = [Reachability reachabilityForInternetConnection];
[可达性 startNotifier];

然后没有错误显示给我!

这里是来自 Reachability GithubreachabilityForInternetConnection 方法的实现

+(instancetype)reachabilityForInternetConnection {
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;

return [self reachabilityWithAddress:&zeroAddress];
}

+(instancetype)reachabilityWithAddress:(void *)hostAddress {
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)hostAddress);

if (ref)
{
id reachability = [[self alloc] initWithReachabilityRef:ref];
return reachability;
}

return nil;
}

最佳答案

如以下代码所示,如​​果我们使用有效的全局 ip,则它不起作用。

struct sockaddr_in addr;
addr.sin_len = INET_ADDRSTRLEN;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("XXX.XXX.XXX.XXX"); // valid global ip instead of 0.0.0.0
Reachability* reachability = [Reachability reachabilityWithAddress:&addr];
[reachability startNotifier];
NSLog(@"reachable[%d]", reachability.currentReachabilityStatus); // when ipv6, it isNotReachable and when ipv4, it is ReachableViaWiFi

关于ios - 在基于本地 Mac 的 IPv6 DNS64/NAT64 网络中检查到 0.0.0.0 的可达性时不会发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37154233/

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