我需要在java中获得互联网速度(每秒上传和下载)。我目前正在使用Sigar和Oshi库,但没有一个能像我想的那样向我显示速度。
在网络上,我发现this类使用Sigar来查看连接速度,但我发现这些值完全错误。
对于Oshi,我无法找到每秒的速度。
一些帮助?
答案 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