Измерение пропускной способности / скорости в нескольких сокетах Java?

Я написал сервер на Java, к которому будет подключено несколько клиентов. Я хочу иметь возможность видеть, сколько данных отправляется каждому клиенту, чтобы иметь возможность принимать решения, например, разрешить больше клиентов или уменьшить их, или даже увеличить / уменьшить частоту отправки данных. Как я могу это сделать?

В настоящее время я использую Java Socket API, но если какая-либо другая библиотека дает мне это легко, можно внести изменения. Сервер будет работать в стиле Linux, вероятно, Ubuntu, поэтому приветствуется и ответ для конкретной ОС.


person efaj    schedule 02.07.2012    source источник


Ответы (1)


Когда вы записываете данные в сокет, вам нужно помнить, сколько вы отправили. На самом деле нет более разумного способа сделать это.

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

person Peter Lawrey    schedule 03.07.2012
comment
Есть ли способ узнать, сколько пакетов было использовано для отправки этих данных, чтобы добавить размер их заголовков в расчет скорости передачи данных в секунду? - person efaj; 03.07.2012
comment
Вы можете определить количество и размер пакетов, обнюхивая сетевой адаптер. - person Peter Lawrey; 03.07.2012