Reachability 在 iOS 上使用什么网络协议?
What network protocol does Reachability use on iOS?
我确信 iOS 开发人员中几乎没有人没有直接或通过 Alamofire
.
等框架使用过 Reachability
我感兴趣的是它到底做了什么?我能做出的最好猜测是给定主机它打开套接字然后侦听所述主机。但是它使用什么网络协议,是简单的 UDP(据我观察,它不是 http),它定期向所述主机发送包并等待答复?
Reachability 根本不发送数据包。它甚至不会告诉您主机实际上是可达的。它只是告诉您,如果您发出网络请求,那么系统将尝试使用一个活动的网络接口。就这样。无法保证这些数据包会到达(更不用说您会收到响应),只是 iOS 会尝试发送它们。
Reachability 实际上只有几个用途(大多数时候不应该使用)。如果“没有网络可用”会导致您修改用户界面,或者告诉您可能是重试先前失败的连接的好时机,这将很有用。 (Since iOS 12, you should really use NWPathMonitor 为此。自 iOS 12 以来,我不知道可达性有什么好的用途。)
您可以知道请求实际上 成功的唯一方法是尝试发送它并查看是否收到响应。这就是为什么不建议您在发送请求之前测试 Reachability 的原因。只需发送请求并在出现错误时进行处理,因为 总是 可能会出现错误,即使 Reachability 表示您可以连接。
我确信 iOS 开发人员中几乎没有人没有直接或通过 Alamofire
.
Reachability
我感兴趣的是它到底做了什么?我能做出的最好猜测是给定主机它打开套接字然后侦听所述主机。但是它使用什么网络协议,是简单的 UDP(据我观察,它不是 http),它定期向所述主机发送包并等待答复?
Reachability 根本不发送数据包。它甚至不会告诉您主机实际上是可达的。它只是告诉您,如果您发出网络请求,那么系统将尝试使用一个活动的网络接口。就这样。无法保证这些数据包会到达(更不用说您会收到响应),只是 iOS 会尝试发送它们。
Reachability 实际上只有几个用途(大多数时候不应该使用)。如果“没有网络可用”会导致您修改用户界面,或者告诉您可能是重试先前失败的连接的好时机,这将很有用。 (Since iOS 12, you should really use NWPathMonitor 为此。自 iOS 12 以来,我不知道可达性有什么好的用途。)
您可以知道请求实际上 成功的唯一方法是尝试发送它并查看是否收到响应。这就是为什么不建议您在发送请求之前测试 Reachability 的原因。只需发送请求并在出现错误时进行处理,因为 总是 可能会出现错误,即使 Reachability 表示您可以连接。