如何在 java 中获取网速和 CPU 温度

How to get internet speed and CPU temperatures in java

我需要在 java 中获取互联网速度(每秒上传和下载)。我目前正在使用 Sigar 和 Oshi 库,但其中 none 显示了我想要的速度。

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

我找不到 Oshi 的每秒速度。

有帮助吗?

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

您需要更新网络统计信息

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

您会在 sleeping/waiting 中获得更好的结果,时间更长一些。 Java 有一些有趣的事实,其中之一是请求 Nms 的休眠时间不一定会让线程休眠那么长的时间(更像是要求线程 "sleep as close to Nms as you are able").

代码应该更像:

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