gpt4 book ai didi

java - 如何用Java检测互联网连接速度?

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:54 26 4
gpt4 key购买 nike

在我的 Java 应用程序中,如何检测互联网连接速度有多快?例如,我在家里使用 AT&T Fast DSL,我想知道是否可以编写一个方法来执行以下操作:

int getInternetConnectionSpeed()
{
...
}

这将返回一个以 kbps 为单位的数字,例如 2800kbps [ 2.8 M ]

编辑:我问的原因是在我的应用程序中,我可以打开多个 Internet 流,具体取决于用户的 Internet 连接速度,我希望它自动确定要打开多少流而不阻塞应用程序。

最佳答案

我认为您可能以错误的方式思考问题。拍摄连接速度的快照只是当时他们吞吐量的指示。当您运行测试会消耗他们的带宽时,他们很容易运行另一个应用程序,然后您的测量值就毫无值(value)了。

相反,我认为您应该不断地添加或删除线程,这取决于它是增加还是减少了它们的吞吐量。我会建议这样的事情(仅限伪代码):

while(true) {
double speedBeforeAdding = getCurrentSpeed();
addThread();
// Wait for speed to stabilise
sleep(20 seconds);
double speedAfterAdding = getCurrentSpeed();
if(speedAfterAdding < speedBeforeAdding) {
// Undo the addition of the new thread
removeThread();
// Wait for speed to stabilise
sleep(20 seconds);

if(getNumberOfThreads() > 1) {
double speedBeforeRemoving = getCurrentSpeed();
// Remove a thread because maybe there's too many
removeThread();
// Wait for speed to stabilise
sleep(20 seconds);
double speedAfterRemoving = getCurrentSpeed();
if(speedAfterRemoving < speedBeforeRemoving) {
// Add the thread back
addThread();
// Wait for speed to stabilise
sleep(20 seconds);
}
}
}
}

您可以调整 sleep 时间以适应。我在这里假设 getCurrentSpeed() 返回所有 下载线程的吞吐量,并且您能够在应用程序执行期间动态打开和关闭线程。

关于java - 如何用Java检测互联网连接速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4127836/

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