代码之家  ›  专栏  ›  技术社区  ›  MegaManX

Reachability在iOS上使用什么网络协议?

  •  0
  • MegaManX  · 技术社区  · 5 年前

    我敢肯定,很少有%的iOS开发人员没有使用过 Reachability ,直接或通过某种框架,如 Alamofire .

    我感兴趣的是它到底做了什么?我能做的最好的猜测是,给定的主机会打开套接字,然后监听该主机。但是它使用什么网络协议,是简单的UDP(据我观察,它不是http)吗?它定期向所述主机发送包并等待应答?

    1 回复  |  直到 5 年前
        1
  •  3
  •   Rob Napier    5 年前

    可达性根本不发送任何数据包。它甚至没有告诉你主机实际上是可访问的。它只是告诉你,如果你提出网络请求,那么系统有一个活动的网络接口,它会尝试使用。这就是全部。无法保证这些数据包会到达(更不用说你会得到响应),只是iOS会尝试发送它们。

    可达性实际上只有几个用途(大多数时候不应该使用)。如果“没有网络可用”会导致您修改用户界面,或者告诉您现在可能是重新尝试以前失败的连接的好时机,这将非常有用。( Since iOS 12 ,你真的应该使用 NWPathMonitor 为了这个。自iOS 12以来,我不知道Reachability有什么好的用途。)

    只有这样,你才能知道一个请求会 事实上 成功就是尝试发送它,看看是否得到回复。这就是为什么不建议在发送请求之前测试可达性。只需发送请求,并在出现错误时进行处理,因为 总是 即使Reachability说您可以连接,也可能出现错误。

    推荐文章