我确信很少有iOS开发人员没有直接或通过Alamofire这样的框架使用过Reachability。
我感兴趣的是它到底做了什么?我所能做的最好的猜测是,给定的主机打开套接字,然后侦听所述主机。但是它使用的是什么网络协议,它是简单的UDP (据我观察它不是http ),它定期向所述主机发送包并等待答复吗?
发布于 2020-12-23 14:22:34
可达性根本不发送任何数据包。它甚至没有告诉你,一个主机实际上是可以到达的。它只是告诉您,如果您提出了一个网络请求,那么系统将尝试使用一个活动的网络接口。就这样。没有任何承诺,这些数据包会到达(更不用说你会得到一个响应),只是iOS会尝试发送它们。
可达性实际上只有几个用途(大多数情况下不应该使用)。如果“没有可用的网络”会导致您修改您的用户界面,或者告诉您现在可能是重新尝试以前失败的连接的好时机,这是非常有用的。(自iOS 12,您确实应该为此使用NWPathMonitor。自从iOS 12之后,我不知道它对可实现性有什么好的用途。)
只有尝试发送请求并查看是否得到响应,才能知道请求是否会成功。这就是不建议在发送请求之前测试Reachability的原因。只要发送请求,并处理错误,如果它们来了,因为它总是有可能有一个错误,即使Reachability说你可以连接。
https://stackoverflow.com/questions/65425780
复制相似问题