我已经阅读了Reachability框架,我仍然感到困惑,为什么主机的定义可以访问“当一个数据包......可以离开本地设备”。
如果可达性返回“是”,那么似乎我仍然需要尝试建立套接字连接,直到实际连接,我真的不知道我的主机已启动。为什么Reachability没有使用Ping来更好地了解主机是否实际启动?首先,这个框架的需求是什么?
我的猜测是这两个,但如果有人知道使用Reachability框架的任何其他原因,请告诉我。
1)可达性提供回调功能,可在互联网恢复时立即发出通知。发生这种情况时,可以立即尝试套接字连接。然而,在99%的应用程序中,每隔几秒钟尝试一次套接字连接似乎是可以接受的,或者最糟糕的情况是在用户执行某个操作时尝试建立连接。当然,这不是一个理想的解决方案,但我不明白为什么Reachability框架因此而真正必要。
2)即使在已经与服务器建立套接字连接的情况下,Reachability也提供了有关网络是否为G3 / WiFi的重要信息。我认为这是Reachability真正必要的唯一时间,因为它允许根据网络类型优化行为。
答案 0 :(得分:0)
可达性实际上非常有用:鉴于您的情况(1),您忘记它会在两个网络上下事件中为您提供通知。这意味着您可以设置回调来处理丢失网络连接等事件(这种情况比WiFi和3G上的要多)。
此外,使用套接字测试连接并不是那么简单;默认情况下,套接字操作是阻塞的,虽然您可以使用异步操作(或线程),但这样做涉及编写代码。更不用说在网络关闭时尝试DNS以及其他此类问题。通过使用框架设置可达性目标,您可以减轻自己处理各种问题的需要,并等待回调。
希望这有帮助,
TG