1

我需要在java中获得互联网速度(每秒上传和下载)。我目前正在使用 Sigar 和 Oshi 库,但它们都没有向我展示我想要的速度。

在网络上,我发现这个类使用 Sigar 查看连接速度,但我发现这些值完全错误。

使用 Oshi,我无法找到每秒的速度。

一些帮助?

在 intellij 控制台中,与 speedtest 相比,这些值是错误的: 在 intellij 控制台中,与 speedtest 相比,这些值是错误的

4

1 回答 1

1

您需要更新网络统计信息

您需要除以过去的时间收到的字节数

通过睡眠/等待更长的时间,你会得到更好的结果。Java 有一些有趣的事实,其中之一是请求 Nms 的睡眠时间并不一定会让线程在这段时间内睡眠(它更像是要求线程“睡眠接近 Nms”尽你所能”)。

代码应该更像:

long download1 = net.getBytesRecv();
long timestamp1 = net.getTimeStamp();
Thread.sleep(2000); //Sleep for a bit longer, 2s should cover almost every possible problem
net.updateNetworkStats(); //Updating network stats
long download2 = net.getBytesRecv();
long timestamp2 = net.getTimeStamp();
System.out.println("prova " + (download2 - download1)/(timestamp2 - timestamp1));
//Do the correct calculations

此解决方案与oshi库一起提供。感谢 YoshiEnVerde

于 2017-09-01T21:41:18.927 回答