gpt4 book ai didi

android - Android 上的简单速度测试应用程序建议

转载 作者:行者123 更新时间:2023-11-30 02:51:31 25 4
gpt4 key购买 nike

任何人都可以指出任何示例代码来解释(甚至稍微解释一下)如何为 Android 编写一个简单的 wifi 速度测试程序吗?我到处都看过了!

提前致谢!

-迈克尔

最佳答案

这并不容易。让我给你一些建议,但你需要进行更多调查。

我不确定是否可以访问 WiFi 连接或 3G 连接的低级别指标。假设这不可能,我的建议是针对某些服务器使用 ping 或类似 ping 的解决方案并获取往返时间 (RTT)。

现在,当您连接到服务器时,影响 RTT 的因素有很多,这些是主要因素:

  • WiFi 速度、拥塞和通信错误
  • 服务器整个路径的延迟,包括 ISP 容量和主干网。
  • 道路拥堵
  • 服务器响应速度

通常您执行 ping 以测试可达性和 RTT 体验。 Ping 是通过 ICMP Echo Request 实现的。但是,Java 不提供发送 ICMP 消息的方法。因此,您可能会尝试与某些服务器建立 TCP 连接。

您可以多次使用带超时的 InetAddress::isReachable,直到找到限制超时。我不推荐这个。

http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#isReachable(int)

我会创建一个 TCP 套接字并调用 connect,然后确定自调用 connect 以来所花费的时间。当然,您必须处理所有影响速度的因素。

另一点要考虑的是,如果你在TCP套接字中使用connect,你必须明白实际上有一个三向握手:客户端发送SYNC,服务器发送SYN/ACK,客户端发送ACK。但是最后一个 ACK​​ 并没有显着增加连接返回的时间,因为它只是由客户端发送的。

话虽如此,我会提出一些建议:

我会尝试的第一件事,仅使用 WiFi,尝试建立到接入点的连接,连接到端口 80、8080 或 443。这将消除最后三个因素。

如果它不起作用,您可以尝试修复服务器,例如 www.google.com。在这种情况下,您将不得不处理所有提到的因素。

在 3G 的情况下,我不知道如何建立到接入点的连接,例如 UMTS 中​​的网关 GPRS 支持节点。但考虑到上述所有 4 个因素,您可以连接到修复服务器。

要考虑的另一点是,当智能手机连接到 WiFi 和蜂窝网络时,它始终使用 WiFi。有一些方法可以强制它使用 3g,一些链接: Android: Force data to be sent over radio vs WiFi Force Android to use 3G when on local area wifi without net access

希望对您有所帮助。

关于android - Android 上的简单速度测试应用程序建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24075089/

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