网络在线监控 [重复]
Posted
技术标签:
【中文标题】网络在线监控 [重复]【英文标题】:Network online monitoring [duplicate] 【发布时间】:2013-10-08 19:46:56 【问题描述】:有问题,我想监控互联网连接。
BradcastReceiver 有一个很好的方法来处理 android.net.conn.CONNECTIVITY_CHANGE 操作。但这还不够。
我想知道何时可以访问互联网。例如: 如果我从路由器断开 wan 线,我希望我的应用程序注意到它并告诉我,尽管连接了 wifi,我仍处于“离线”状态。
那么,有没有一些默认的 android 解决方案,或者我应该让线程女巫重复 ping 到某个主机?还是别的什么?
谢谢
【问题讨论】:
【参考方案1】:你根本无法做你想做的事。由于某种原因,互联网上任何地方的连接都可能被破坏——你无法知道这一点。
如果您需要知道是否可以到达特定地址,那么唯一可靠的方法是使用心跳信号 - Ping 或持续连接上的常规流量。
【讨论】:
不完全是事实:见***.com/questions/6493517/…;虽然这可能仍然不能保证访问所需的端点... :) 为什么正确的答案比 ping 到同一个地址更好? @Trinimon 对您提出的问题的回答与我在这里所说的差不多。 @MartasSan 并非所有服务器都会响应 ping,尽管它们会响应正确的连接。 HTTP 可能是最常见的,但它有点重量级,因为它使用 TCP - 因此建议使用持久连接。如果目标机器上有可用的响应器,则发送 UDP 数据包会更轻松。 @Mike W:我的评论与“你根本无法做你想做的事”有关。 - 不正确的部分;)...链接的答案还提供了一些不错的代码。【参考方案2】:据我所知,没有简单的方法可以测试 Internet 是否可以访问。您可以反复 ping 到某个主机,但这不是一个好习惯。这是非常耗电的方法。当您的应用发出请求但失败时,您应该考虑无法访问 Internet,并显示适当的 toast 消息、屏幕或其他内容。另外,我建议您查看一些编写良好的应用程序,例如 Google Play 商店,看看它们如何解决这些问题。至少这是我所做的:)
【讨论】:
谢谢,我想我也试试这个:)以上是关于网络在线监控 [重复]的主要内容,如果未能解决你的问题,请参考以下文章