2012-05-06 2 views
0

У меня есть медиа-сервер на основе Java, который передает контент как на веб-страницу, так и на устройство Android. Он настроен таким образом, что он может использоваться несколькими пользователями, а также разговаривать с другими серверами и обмениваться медиа с ними.Мониторинг использования сети в Linux с использованием Java

Я хотел бы иметь возможность отслеживать общий сетевой трафик (kb/s) через службу на моем медиа-сервере, поэтому я могу видеть это через мое устройство Android или веб-страницу без необходимости просмотра моего сервера.

Есть ли простой способ получить эту информацию с Java? Какой-то файл ресурсов Linux? Я посмотрел на netstat, а некоторые другие - на googling, и они, похоже, не доставляют мне то, что я хочу, очевидным образом. Мне просто нужен общий трафик, мне не нужно знать, кто со мной разговаривает.

Спасибо за любую помощь. :)

pps: Я использую самую последнюю версию OpenSUSE, но также имею рабочие версии на Fedora (самое последнее).

ответ

1

Прочитать статистику по сети от /proc/net/dev - см. http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html.

Вы увидите что-то вроде этого:

 
Inter-| Receive            | Transmit 
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed 
    lo: 2504  30 0 0 0  0   0   0  2504  30 0 0 0  0  0   0 
    eth0:33769785 2548318 0 0 0  0   0   0 4146854 215379 0 0 0  0  0   0 
    eth1:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 

Так что вам нужно открыть файл, прочитать каждую строку и проверить, первый столбец, чтобы найти интерфейс (ы), вы заботитесь о, а затем извлекать полученные и/или отправленные байты и/или пакеты. Если следить за время между операциями чтения, вы можете рассчитать скорость так:

Пусть
b0 = байт во время t0
b1 = байт во время t1, спустя некоторое время, чем t0.

Затем вы можете рассчитать скорость, r, как это:
r = (b1 - b0)/(t1 - t0)

+0

Так вы говорите, я мог читать байты числа там, а затем прочитать его еще раз в течение нескольких секунд, а разница/времени будет быть моей ставкой? Хм, это интересный способ сделать это. Полагаю, это было бы не слишком сложно. – Crandy

+0

Точно. Я обновил свой ответ, когда вы спрашивали. :-) –

+0

Отлично. Все делается с помощью XML-файлов прямо сейчас, поэтому я просто хочу, чтобы некоторые временные службы обновили XML-файл. Спасибо за совет! – Crandy

Смежные вопросы