Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Подсчёт траффика


Автор: DoDo 5.10.2005, 10:05
Всем Доброе Утро!
Вот появился один вопрос:
Как можно узнать сколько из сети закачено траффика и отправлено в сеть?
Вообщем говоря, надо сделать так чтобы, если я сижу в сети и запускаю программу она показывала сколько траффика закачено и отправлено в сеть.
Если есть для этого функции то подскажите, если у кого исходники, то если не трудно скиньте их тоже сюда!

Автор: DENNN 5.10.2005, 10:14
Необходимо понимать, какой трафик вы будуете считать: на транспортном уровне, на канальном уровне, принадлежащий какому-то сервису и пр. Кроме того, трафик можно также снимать с разных сетевых устройств. Например, при коннекте по ADSL посредством авторизации PPTP можно считтаь трафик, идущий в туннеле, а можно на сетевой карте. Во втором случае число отправленных TCP-пакетов будет ~5-15% больше, чем скажем сгенерил ваш броузер.

Резюме, чтобы что-то посчитать нужно по возможности четко представлять что же мы считаем за трафик.

Автор: DoDo 5.10.2005, 10:37
DENNN , полностью с тобой согласен .
В данной ситуации мне трубуется определить траффик который поступает через сетевую карту .
Как определить сколько я зугрузил из сети и сколько было отправлено ?

Автор: DENNN 5.10.2005, 10:55
Если требования не слишком жесткие, то можно попробовать установить компоненты виндоус, обеспечивающие работу с SNMP. В SNMP для каждой сетевой карты есть счетик принятых и отправленных байтов + море другой информации. Если это кажется слишком сложным, то просто парсить вывод команды
Цитата
netstat -e

или
Цитата
netstat -es

Автор: DoDo 5.10.2005, 11:20
DENNN , верно .
Только как сделать самому программу чтобы она это показывала ?
Вообще говоря , сделать программу на С++ чтобы показывала данные о трафике .
Исходников нету?
Просто хочу попробовать написать программу которую запускаешь и она записывает данные о трафике в .тхт файл .

Автор: DENNN 5.10.2005, 11:40
Чего тебе не понятно? как перехватить вывод netstat? Если совсем уж так все тяжело, то можно перенаправить вывод во временный текстовый файл и читать его содержимое из проги.

Автор: DoDo 5.10.2005, 11:47
DENNN , верно ты подметил .
А как это сделать ?
Просто я еще пока не силен в C++

Автор: DENNN 5.10.2005, 11:54
О боги! И ты хочешь трафик подсчитвать?

Идем читаем учебник по C++ (любой, какой надешь), открываем для себя MSDN (о чудо, там столько всего, даже про операции с файлами!!!), cмотрим как работает перенаправление вывода в файл
Цитата

netstat -e > /tmp/tmp232454

смотрим FAQ, смотрим поиск по форуму, смотрим поиск по интеренуту. Пишем свою небольшую программу.

Если же одбросить эмоции...: тебе что не понятно? Как на C++ програмировать или как посчитать трафик?
Если на уровне общего количества прошедших байтов через сетевую, то трафик твоей проги от общего ты не отделишь. Более того, там даже нет информации о том, с какого и на какой порт посылались TCP пакеты.
Если нужен функционал типа KasperskiyAntiHacker, где разрешения указываются на уровне программы, то тебе необходимо в систему внедрить свой сетевой драйвер, либо использовать зуки на массу сетевых команд ОС. Короче - дело не пяти минут.

Автор: DoDo 5.10.2005, 12:05
DENNN , всё понятно !
Спасибо ! Главное как я понял просто переправить в файл !
Вот и всё ! Спасибо !

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)