【问题标题】:Reachability lying about disconnected wifi network关于断开的wifi网络的可达性
【发布时间】:2014-03-13 05:48:31
【问题描述】:

我使用 Stackmob SDK(即将结束),我假设他们使用 AFNetworking 来实现可访问性。如果设备连接到与 Internet 断开连接的 wifi 网络,则可达性检查将是肯定的,并且以下语句将是正确的:

if ([self.appDelegate.client.networkMonitor currentNetworkStatus] == SMNetworkStatusReachable) {
    // reachable
}

如何微调此检查以克服目前的限制?如何在这个 if 语句中检查真实的网络可达性,或者那里有更好的可达性检查?

【问题讨论】:

  • 它已连接到网络 - 所以它没有撒谎。在您的情况下,您可以检查与某个主机的连接。
  • 好的,你会推荐什么样的检查?谢谢。
  • 这应该会有所帮助:stackoverflow.com/a/3597085/653513

标签: ios objective-c afnetworking


【解决方案1】:

如果您的问题是“我可以向该主机发送数据并接收响应”,那么 Reachability 只能回答“否”或“可能”。它不能回答“是”,因为有很多连通性因素没有检查。

可达性只检查第一跳。它将可达性定义为数据包沿该主机方向离开设备的能力。如果设备连接到声称能够路由到该主机的网络,则满足可达性。如果路由器在撒谎或主机宕机或堪萨斯州有不友好的反铲挖土机,那么 Reachability 的结果将是乐观的。

回答“我可以向该主机发送数据并接收响应”这个问题的唯一可靠方法是实际尝试向该主机发送数据并接收响应。当连接肯定不可用时,可达性可以帮助您放弃。如果您尝试失败,Reachability 的网络更改通知可以帮助您决定何时重试,而不会浪费电力。

【讨论】:

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