Я хотел бы получить полное сетевое использование хоста, то есть текущую скорость загрузки и загрузки. Как я могу это сделать на Java? Если это упростит, предположим, что платформа - это Linux.Как измерить использование сетевой сети в Java?
ответ
Nethogs: http://nethogs.sourceforge.net/, вероятно, инструмент, который вы ищете.
Большинство людей предпочитает это, так как оно разбивает полосу пропускания по процессу.
Как я могу это сделать на Java?
Выполнение этого на Java - это плохая идея ... если не требуется строгое требование для получения информации в более крупном приложении Java.
Вы не можете сделать это в чистой Java. Для доступа к такой информации нет стандартных Java-API.
I Googled для чего-то конкретного и свободного от Java, соответствующего вашим требованиям, но ничего не заметил. (YMMV ... пожалуйста, повторите поиск самостоятельно!).
Есть специальные инструменты для просмотра статистики сети и т. Д., И можно попытаться запустить эти инструменты в качестве внешних процессов с Java и «очистить» выход. Но это обязательно будет связано с OS/tool.
Вы могли бы попытаться повторить то, что эти инструменты делают в Java, но это может включать нативные вызовы библиотек, и будет , конечно быть OS специфичны. (В Linux, вы можете быть в состоянии получить необходимую информацию путем чтения из
/proc
файловой системы ... но может быть также вопросы контроля доступа.)
Если вы знаете, как использовать другой инструмент сети как netstat, то вы можете использовать Runtime.getRuntime(). exec («ваш сетевой инструмент») и соответствующим образом управлять результатом. – mawia
Можете привести пример? Предположим, я не знаю, как использовать сетевой инструмент ... –
@EduardoBezerra * Предположим, я не знаю, как использовать сетевой инструмент ... * Единственное предположение, которое мы можем сделать, это то, что вы сделали некоторые предварительные исследования до приезда сюда. –