Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Использование траффика.


Автор: iddqd 16.1.2006, 15:11
Скачал Магенту и поискал по форуму. Не могу понять как сделать.
Необходимо мониторить входящий\исходящий траффик одной программы.

Автор: SoWa 16.1.2006, 21:43
Вот исходники.

Автор: iddqd 17.1.2006, 18:07
Видишь ли, сложность как раз в том, что мне надо считать траффик только для моего приложения или для какого-нибудь конкретного приложения, а не общий траффик.

Автор: Snowy 17.1.2006, 18:12
Наиболее простой вариант - через MappedPort.
Если конечно такой вариант устроит.

Автор: iddqd 17.1.2006, 18:17
Snowy, можно подробней, пожалуйста.
Если возможно - с примером.

Автор: Snowy 17.1.2006, 19:10
Нужно написать мапер.
Мапер принимает входящий трафик на свой порт и пересылает его дальше.
Логика:
Например мы хотим считать (или логировать) траффик ICQ.
Запускаешь на своей машине мапер.
Настраиваешь исходящие хост и порт на сервер ICQ.
Выбираешь любой входящий порт, какой не занят.
Стартуешь мапер.
Запускаешь клиента (в данном случае аську).
Выбираешь сервер - хост и порт, где сидит мапер (в данном случае локалхост, наш входящий порт).
Ася коннектится к маперу, мапер все до байтика пересылает на сервер аси и обратно.
Смысл в том, что на мапере мы имеем событие, в котором мы можем полностью контролировать траффик. Можем считать, писать в лог, менять. Все, что угодно.
Минус такого подхода - клиент должен быть настроен на мапер, иначе ничего не получится.
Плюсы - все просто и ясно.
Можно реализовать самому, а можно использовать TIdMappedPortTCP (TIdMappedPortUDP - для UDP) - там уже все реализовано.
Только пропиши хост, входящий-исходящий порты, да нарисуй обработчик события на проходящий траффик.
Добавлено @ 19:12
Добавлю:
Можно мапер вынести на отдельный сервер, запретить файрволом для всех, кроме сервера, обращение к серверу аси, а всех заставлять коннектить асю через мапер.
Мапер - это вообще одна из функций полноценной прокси.

Автор: iddqd 18.1.2006, 09:41
Ужас какой.
Я тогда поступлю несколько иначе.
Сделаю работу моей программы с интернетом по определённом, уникальному порту и буду считать трафик только по этому порту.
В принципе я это уже сделал и всё работает.
Спасибо за помощь.

Автор: N1k 18.1.2006, 14:02
Так что нужно сделать, мониторить или считать трафик?
Цитата(iddqd @ 18.1.2006, 09:41 Найти цитируемый пост)

Ужас какой.
Я тогда поступлю несколько иначе.
Сделаю работу моей программы с интернетом по определённом, уникальному порту и буду считать трафик только по этому порту.
В принципе я это уже сделал и всё работает.

А поставить хук на send и recv в нужных тебе приложениях не подойдет?
Тогда можно считать трафик для нескольких(указанных) приложений.

Автор: iddqd 18.1.2006, 20:48
N1k, считать траффик для определённой программы.
Возможно подойдёт и хук, только можно пример?

Автор: RA 19.1.2006, 16:50
Цитата(iddqd @ 18.1.2006, 20:48 Найти цитируемый пост)

Возможно подойдёт и хук, только можно пример?


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

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