如何在 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
我需要在 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