2017-08-31 94 views
0

我需要在java中獲得網速(每秒上傳和下載)。我目前正在使用Sigar和Oshi圖書館,但他們沒有一個能夠顯示我想要的速度。如何在java中獲取網速和CPU溫度

在網絡上,我發現this類使用Sigar來查看連接速度,但我發現這些值完全錯誤。

使用Oshi我無法找到每秒的速度。

有幫助嗎?

在的IntelliJ控制檯中值錯SPEEDTEST相比: In intellij console the values are wrong compared with speedtest

+0

Sigar(界面總字節數)與speedtest(此文件傳輸的每秒兆比特數)之間有什麼不匹配。要獲得類似的「每秒最大字節數」類型的測量,您必須啓動一個計時器,做一些佔用大量帶寬,停止計時器......然後決定有多少字節,並將其分開花了多長時間。 – Gus

+0

首先感謝您糾正這個帖子,我的英文不太好 我的程序必須監控互聯網上的任何程序的速度(如果我從鉻下載的東西,我想顯示當前的速度在我的程序)。 –

+0

與Windows任務管理器一樣,在性能選項卡中 –

回答

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