我已经阅读了Reachability框架,并且仍然不明白为什么可以访问主机的定义是“当数据包.可以离开本地设备时”。
如果可达性返回“是”,那么我似乎仍然需要尝试并建立一个套接字连接,直到真正连接为止,我并不知道我的主机已经打开。为什么Reachability不使用Ping来更好地了解主机是否真的在运行呢?首先,这个框架有什么必要?
我猜是这两个,但是如果有人知道使用Reachability框架的其他原因,请告诉我。
1) Reachability给出了一个回调,它在互联网恢复时立即发出通知。当发生这种情况时,可以立即尝试套接字连接。然而,在99%的应用程序中,每隔几秒钟尝试一次套接字连接似乎是可以接受的,或者最糟糕的情况是,在用户执行特定操作时尝试连接。当然,这不是一个理想的解决方案,但我不明白为什么Reachability框架会因为这个原因而变得非常必要。
2)即使在与服务器进行套接字连接的情况下,Reachability也提供了关于网络是否为G3/WiFi的重要信息。我认为这是唯一真正需要Reachability的时候,因为它允许根据网络类型对行为进行优化。
发布于 2012-08-24 13:00:29
可达性实际上是非常有用的:考虑到您的情况(1),您忘记了它为您提供了网络向上和向下事件的通知。这意味着您可以将回调设置为处理诸如网络连接丢失等事件(这比您在WiFi和3G上所希望的要多)。
此外,使用套接字测试连接并不那么简单;默认情况下,套接字操作是阻塞的,尽管可以使用异步操作(或线程),但这样做需要编写代码。更别提在网络瘫痪时尝试DNS,以及其他类似的问题。通过使用框架设置可达目标,您可以减轻自己处理各种问题的需要,只需等待回调。
希望这能帮上忙
热重
https://stackoverflow.com/questions/12109743
复制相似问题