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

问题描述

我确信很少有 iOS 开发者没有直接或通过诸如 Reachability 之类的框架使用过 Alamofire

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

解决方法

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

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

您可以知道请求实际上成功的唯一方法是尝试发送它并查看您是否得到响应。这就是为什么不建议您在发送请求之前测试 Reachability。只需发送请求并处理出现的错误,因为总是可能出现错误,即使 Reachability 表示您可以连接。