如何在java中获得Internet速度和CPU温度

时间:2017-08-31 15:56:35

标签: java networking intellij-idea sigar

我需要在java中获得互联网速度(每秒上传和下载)。我目前正在使用Sigar和Oshi库,但没有一个能像我想的那样向我显示速度。

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

对于Oshi,我无法找到每秒的速度。

一些帮助?

在intellij控制台中,与speedtest相比,这些值是错误的: In intellij console the values are wrong compared with speedtest

1 个答案:

答案 0 :(得分:0)

您需要更新网络统计信息

您需要划分已经过的时间收到的字节数

睡眠/等待时间会更好。 有一些有趣的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

这个解决方案是here与oshi库。感谢YoshiEnVerde