gpt4 book ai didi

android - 每 1 分钟 ping 8.8.8.8,在一些 ping 后 ping 超时

转载 作者:行者123 更新时间:2023-12-04 07:39:44 35 4
gpt4 key购买 nike

我有一个需要持续网络监控的 Android 应用程序,我需要在有互​​联网和没有互联网时收到通知。我试过 Android 连接管理器,它只告诉互联网 wifi 是否已连接,但不告诉是否有可达性。所以我用下面的ping方法来检查可达性。

    private fun isOnline(): Boolean {
return try {
val timeoutMs = 1500
val sock = Socket()
val socketAddress = InetSocketAddress("8.8.8.8", 53)
sock.connect(socketAddress, timeoutMs)
sock.close()
true
} catch (e: IOException) {
Logger.e(TAG, e.toString())
false
}
}
现在为了每 1 分钟检查一次,我使用的是 fixedRateTimer,它将每 1 分钟调用一次此方法并相应地通知。
现在我面临的问题是,这可以正常工作几个小时,并且我获得了正确的连接状态。但几个小时后,ping 开始超时。每次交替 ping 都会出现超时异常。
我想了解几件事,
  • 第一件事,可以每1分钟ping一次检查网络吗?
  • 客户端会因为频繁的 ping 被谷歌屏蔽吗?
  • 还是与ISP有关?
  • android中有没有更好的方法来实现我想要的?

  • 任何意见,将不胜感激。提前致谢!
    PS:我也尝试过 onCapabilitiesChanged 并且每次连接和断开连接时回调都不是立即的,尽管谷歌文档说回调将是立即的。

    最佳答案

    but doesn't tell if there is reachability. So I used the following ping method to check the reachability


    首先,那不是 ping .那就是打开和关闭一个套接字。
    其次,它只能告诉您是否可以打开到该 IP 地址的套接字连接。它不会告诉您是否可以访问其他任何内容。因此,这可能会出现误报(您可以到达 8.8.8.8 但无法访问您的真实服务器)和漏报(8.8.8.8 被网络管理阻止,但您的真实服务器不是)。

    Now to keep checking this every 1 minute I am using a fixedRateTimer which will call this method every 1 minute and notify accordingly.


    这只会在您的进程运行时有效,并且只会在您由于打盹模式/应用程序待机/制造商特定的电源管理解决方案而无法访问 Internet 之前。

    First thing, is it okay to ping for every 1 minute to check the network?


    它有缺陷。 “好的”是一个主观的衡量标准;只有您可以决定它是否适合您。

    Can the client be blocked by Google for frequent pings?


    这不是 ping。谷歌当然有能力为这种有问题的客户采取行动。

    Or is it anything related to the ISP?


    达到 8.8.8.8 的 Android 设备涉及很多部分:
  • 手机用于连接的任何 WiFi 网络的网络管理(如果相关)
  • 移动运营商或 ISP
  • 您与 Google 之间的各种其他 ISP
  • 谷歌自己的网络管理

  • 如果他们愿意,他们中的任何一个都可以采取措施。

    Is there a better approach in android to achieve what I want?


    我的目标是完全消除“需求”,因为 Android 和设备制造商将在每一步都与您抗争。
    至少:
  • 执行有效的预期操作,例如实际的 ping;和
  • 针对相关服务器进行操作

  • IIRC,8.8.8.8 是 DNS 服务器。如果您的应用是 DNS 客户端,欢迎您对 8.8.8.8 执行有效、有用的 DNS 操作。如果您的应用不是 DNS 客户端, 停止搞乱别人的服务器 .运行您自己的服务器并测试到达它。例如,您可以运行一个 Web 服务器并测试您是否可以检索您的 robots.txt。文件。

    关于android - 每 1 分钟 ping 8.8.8.8,在一些 ping 后 ping 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67547006/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com