1

我已经阅读了可达性框架,但仍然很困惑为什么主机可达的定义是“当数据包......可以离开本地设备时”。

如果可达性返回“是”,那么我似乎仍然需要尝试建立一个套接字连接,直到实际连接为止,我并不知道我的主机已经启动。为什么 Reachability 不使用 Ping 来更好地了解主机是否实际启动?这个框架首先需要什么?

我的猜测是这两个,但如果有人知道使用可达性框架的任何其他原因,请告诉我。

1) 可达性提供回调,当互联网恢复时提供即时通知。发生这种情况时,可以立即尝试套接字连接。然而,在 99% 的应用程序中,每隔几秒尝试一次套接字连接似乎是可以接受的,或者在最坏的情况下,只是在用户执行特定操作时尝试建立连接。诚然,这不是一个理想的解决方案,但我不明白为什么出于这个原因,Reachability 框架真的很有必要。

2) 即使在与服务器建立套接字连接的情况下,Reachability 也会提供有关网络是否为 G3/WiFi 的重要信息。我认为这是唯一一次真正需要可达性,因为它允许根据网络类型优化行为。

4

1 回答 1

1

可达性实际上非常有用:鉴于您的情况(1),您忘记了它会为您提供有关网络启动和关闭事件的通知。这意味着您可以设置回调来处理诸如丢失网络连接之类的事件(在 WiFi 和 3G 上发生的情况比您希望的要多)。

此外,使用套接字测试连接并不是那么简单。默认情况下,套接字操作是阻塞的,尽管您可以使用异步操作(或线程),但这样做涉及编写代码。更不用说在网络关闭时尝试 DNS 以及其他此类问题。通过使用框架设置可达性目标,您可以减轻自己处理各种此类问题的需要,而只需等待回调。

希望这可以帮助,

TG

于 2012-08-24T13:00:29.657 回答