Как узнать скорость интернета и температуру процессора в Java

Мне нужно, чтобы получить скорость интернета (загрузка и загрузка в секунду) в Java. В настоящее время я использую библиотеки Sigar и Oshi, но ни одна из них не показывает мне скорость, которую я хотел бы.

В сети я обнаружил, что этот класс использует Sigar, чтобы увидеть скорость соединения, но я нахожу значения совершенно неверными.

С Оши я не могу найти скорость в секунду.

Некоторая помощь?

В intellij консоли значения неверны по сравнению с speedtest: В intellij консоли значения неверны по сравнению с speedtest

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

Это решение здесь с библиотекой Оши. Благодаря YoshiEnVerde

Другие вопросы по тегам