Любые идеи, как я мог бы создать "метр" использования сети для Java SE? - PullRequest
0 голосов
/ 23 июня 2010

Мне нужно измерить количество байтов, используемых приложением Java изнутри Java (т. Е. У меня нет особого доступа к JVM, за исключением того, что у меня нет диспетчера безопасности для работы), но мне нужны все байтыотправлено / получено, включая заголовки протокола и т.п.У кого-нибудь есть хорошие идеи о том, как это сделать?

Очевидный шаг заключается в создании нового URLConnectionHandler и вставке измерения в потоки ввода-вывода.Это, однако, не предоставляет мне размеры заголовков сообщений HTTP / HTTPS, отправляемых в / из приложения Java.

1 Ответ

2 голосов
/ 23 июня 2010

Если вам нужно точное количество байтов в сети, вам нужна помощь операционной системы, причем очень в зависимости от платформы.

Сетевой трафик - это набор кукол Бабушки.

URLConnection добавляет заголовок, стек TCP добавляет заголовок к каждому пакету, стек Ethernet добавляет еще один заголовок.Тогда есть подтверждение, повторные передачи и т. Д., Происходящие за спиной вашей программы.Тогда есть DNS-запросы и пакеты маршрутизации, ...

Вам понадобятся специальные правила, чтобы отделить трафик вашего приложения от остального трафика.

В целом довольнобезнадежно.

В практических целях я бы порекомендовал вам настроить приложение на машине и использовать wireshark или аналогичный для захвата трафика.Внутри вы измеряете полезную нагрузку, как вы описываете, затем используете внешние измерения для измерения накладных расходов.

Затем оцените% накладных расходов на типичное использование и добавьте их к измерению полезной нагрузки в вашем приложении.Это будет достаточно близко, чтобы никто не заметил разницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...