我需要在java中获得互联网速度(每秒上传和下载)。我目前正在使用 Sigar 和 Oshi 库,但它们都没有向我展示我想要的速度。
在网络上,我发现这个类使用 Sigar 查看连接速度,但我发现这些值完全错误。
使用 Oshi,我无法找到每秒的速度。
一些帮助?
我需要在java中获得互联网速度(每秒上传和下载)。我目前正在使用 Sigar 和 Oshi 库,但它们都没有向我展示我想要的速度。
在网络上,我发现这个类使用 Sigar 查看连接速度,但我发现这些值完全错误。
使用 Oshi,我无法找到每秒的速度。
一些帮助?
您需要更新网络统计信息
您需要除以过去的时间收到的字节数
通过睡眠/等待更长的时间,你会得到更好的结果。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