【问题标题】:Reachability and IPv6可达性和 IPv6
【发布时间】:2015-11-03 11:42:21
【问题描述】:

我的一个项目使用 Apple 的 Reachability 类来监控网络状态并在发生变化时收到通知。

在阅读了this article 关于支持 IPv6 的内容后,我想知道是否要对此类进行制作以使其与 IPv6 一起使用。

我在the same article 之后设置了一个 IPv6 网络,一切似乎都正常,但可能设置有问题。

Reachability 类检查 Internet 连接的部分是否像现在一样使用 IPv6,还是需要进行一些更改?

【问题讨论】:

  • 你发现了吗?
  • 如果我不更新可达性库会产生问题吗?如果我的应用程序已经与旧库一起上传,会发生什么? \

标签: ios objective-c ipv6 reachability


【解决方案1】:

Apple 自己的简短回答(https://developer.apple.com/videos/play/wwdc2015/719/ 大约 10:30 - 尽管我建议完整观看视频 - 或者至少查看这里的关键点:http://www.internetsociety.org/deploy360/blog/2015/06/video-of-apple-wwdc-session-about-ipv6-and-ios-9-now-available-and-some-screenshots/):

只需尝试连接。

来自https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW25 的复制粘贴重申了这一点:

无需预检即可连接

可达性 API(请参阅 SCNetworkReachability 参考)是 用于识别连接后的诊断目的 问题。许多应用程序错误地使用这些 API 来主动检查 通过调用 Internet 连接 SCNetworkReachabilityCreateWithAddress 方法并将其传递给 IPv4 地址为 0.0.0.0,表示路由器上有路由器 网络。但是,路由器的存在并不能保证 存在互联网连接。一般来说,避免预检网络 可达性。尝试建立连接并优雅地处理 失败。如果您必须检查网络可用性,请避免致电 SCNetworkReachabilityCreateWithAddress 方法。调用 SCNetworkReachabilityCreateWithName 方法并传递一个主机名 而是。

有些应用还通过 SCNetworkReachabilityCreateWithAddress 方法 IPv4 地址 169.254.0.0,一个自分配的本地链路地址,用于 检查活动的 Wi-Fi 连接。检查 Wi-Fi 或蜂窝网络 连接,查找网络可达性标志 改为 kSCNetworkReachabilityFlagsIsWWAN。

【讨论】:

  • 如果我不更新可达性库会产生问题吗?如果我的应用已经与旧库一起上传,会发生什么?
  • 如果你避免调用旧的例程,那么你只会有一些死代码,这可能不是问题。
【解决方案2】:

我对 IPv6 和可达性类也有类似的疑问。 Apple 在他们的文档中要求提供对 IPv6 类型的支持,例如 (struct in_addr6, AF_INET6, struct sockaddr_in6 etc),但该类似乎还没有更新为拥有这些类型。这是我的疑问。我还没有尝试 IPv6 测试,但只是在进行静态代码检查时观察到。可能需要进行一些更改。

Reachability.m

+ (instancetype)reachabilityForInternetConnection
{
    struct sockaddr_in zeroAddress;

    bzero(&zeroAddress, sizeof(zeroAddress));

    zeroAddress.sin_len = sizeof(zeroAddress);

    zeroAddress.sin_family = AF_INET;

    return [self reachabilityWithAddress:&zeroAddress];
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多