【问题标题】:How to get internet speed and CPU temperatures in java如何在java中获得互联网速度和CPU温度
【发布时间】:2018-02-09 15:46:58
【问题描述】:

我需要在 java 中获得互联网速度(每秒上传和下载)。我目前正在使用 Sigar 和 Oshi 库,但它们都没有显示我想要的速度。

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

用 Oshi 我找不到每秒的速度。

一些帮助?

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

【问题讨论】:

  • 从 Sigar 获得的数据(接口总字节数)与从 speedtest 获得的数据(此文件传输的每秒兆比特数)不匹配。要获得类似的“每秒最大字节数”类型的测量,您必须启动一个计时器,做一些占用大量带宽的事情,停止计时器......然后确定有多少字节,然后划分它花了多长时间。
  • 首先感谢您纠正帖子,我的英语不太好我的程序必须监控互联网上任何程序的速度(如果我从 chrome 下载东西,我想显示我程序中的当前速度)。
  • 就像在 Windows 任务管理器中,在性能选项卡中

标签: java intellij-idea networking sigar oshi


【解决方案1】:

您需要更新网络统计信息

您需要除以经过的时间收到的字节数

睡眠/等待更长时间会获得更好的效果。 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    相关资源
    最近更新 更多