Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Счетчик трафика, сокеты 
:(
    Опции темы
GShadrin
  Дата 10.12.2009, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 20.7.2009
Где: Екатеринбург

Репутация: нет
Всего: нет



Здравствуйте.

Есть клиент. Работает на socket.
Интересует можно ли и как организовать учет исходящего/входящего трафика, вызванного клиентом?
PM MAIL   Вверх
arto
Дата 10.12.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



на каком уровне?
PM MAIL ICQ   Вверх
GShadrin
Дата 10.12.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 20.7.2009
Где: Екатеринбург

Репутация: нет
Всего: нет



tcp сокет
Код

socket($sock, PF_INET, SOCK_STREAM, getprotobyname('tcp'));

Клиент общается с сервером, необходимо знать сколько передано исход./вход. трафика.
PM MAIL   Вверх
n4n0bit
Дата 10.12.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.6.2008

Репутация: нет
Всего: 1



GShadrin  побайтово считать при записи в сокет, и при чтении с него, 
Код

$in += length($from_sock); $out += length($to_sock)
 + заголовки протоколов.

Это сообщение отредактировал(а) n4n0bit - 10.12.2009, 17:15
PM MAIL WWW Jabber   Вверх
ginnie
Дата 10.12.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



n4n0bit, расскажите, пожалуйста, как заголовки протоколов учесть, не зная как именно поток данных на пакеты делится smile 




--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
GShadrin
  Дата 10.12.2009, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 20.7.2009
Где: Екатеринбург

Репутация: нет
Всего: нет



Т.е., как я понимаю,
Цитата(n4n0bit @  10.12.2009,  17:14 Найти цитируемый пост)

$in += length($from_sock); $out += length($to_sock)

вернет размер входящих и исходящих данных без учета размера заголовков уровня ниже tcp?
length($from_sock) - возвращает размер данных переданных по сокету с момента его создания?
Если я передаю исходящие и входящие данные через один сокет, как разграничить переданный размер на размер входящих и исходящих данных?
Можно как-то получить размер заголовков уровня ниже tcp?
Насколько велика погрешность, без учета их?

Это сообщение отредактировал(а) GShadrin - 10.12.2009, 19:39
PM MAIL   Вверх
arto
Дата 10.12.2009, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



вы задачу опишите
PM MAIL ICQ   Вверх
n4n0bit
Дата 11.12.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.6.2008

Репутация: нет
Всего: 1



ginnie немного не понял ваш вопрос. К примеру нам нужно подсчитать UDP датаграму отправленную по сети Ethernet, мы берем 8 байтовый заголовок UDP + 20 байт заголовка IP + 14 байтовый заголовок Ethernet + arp header + length(наши данные, если они есть), таким образом получаем примерный размер в целом. 

Как вариант, можно заюзать Net::Pcap

Это сообщение отредактировал(а) n4n0bit - 11.12.2009, 13:07
PM MAIL WWW Jabber   Вверх
ginnie
Дата 11.12.2009, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



n4n0bit, когда мы сами формируем пакеты понятно как посчитать, а вот как посчитать, когда 

Цитата

socket($sock, PF_INET, SOCK_STREAM, getprotobyname('tcp'));


и мы передаем данные размером 200 Кб.

Похоже, что Net::Pcap действительно может помочь.

Это сообщение отредактировал(а) ginnie - 11.12.2009, 13:30


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
n4n0bit
Дата 11.12.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.6.2008

Репутация: нет
Всего: 1



Ну libpcap большая часть софта использует для подсчета трафа, trafd, ipcad и др.

Цитата(ginnie @  11.12.2009,  13:27 Найти цитируемый пост)
n4n0bit, когда мы сами формируем пакеты понятно как посчитать, а вот как посчитать, когда 


Да таким же макаром мы получим приближенное значение, в любом случаи вариант с libpcap буит лучше, да и может человуку не нужно считать заголовки, некоторые ISP не берут их в расчет, да и задача толком не описана.

PM MAIL WWW Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.