Как узнать скорость интернета и температуру процессора в Java
Мне нужно, чтобы получить скорость интернета (загрузка и загрузка в секунду) в Java. В настоящее время я использую библиотеки Sigar и Oshi, но ни одна из них не показывает мне скорость, которую я хотел бы.
В сети я обнаружил, что этот класс использует Sigar, чтобы увидеть скорость соединения, но я нахожу значения совершенно неверными.
С Оши я не могу найти скорость в секунду.
Некоторая помощь?
В 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