В CommView реализован простой и понятный интерфейс доступа к
TCP/IP. Он позволяет вашему приложению в режиме реального времени
обрабатывать пакеты, принятые с помощью CommView. Начиная с версии
5.0 есть возможесть передавать пакеты аналогично тому, как это
делает Packet Generator (генератор пакетов).
Принцип работы
Вам следует запустить CommView, задав ему в командной строке
специальный ключ MIRROR, указывающий программе на какой IP-адрес и
в какой TCP-порт дублировать захватываемые пакеты.
Примеры:
CV.EXE mirror:127.0.0.1:5555 // дублирует пакеты на loopback,
в TCP-порт 5555
CV.EXE mirror:192.169.0.2:10200 // дублирует пакеты на
192.169.0.2, в TCP-порт 10200
Когда CommView запущен с этим ключом, он пытается установить
TCP-соединение с указанным IP-адресом по указанному номеру порта.
Это означает, что ваше приложение уже должно быть запущено и должно
быть готовым к приему по указанному порту. Если CommView не может
установить соединение, он будет делать повторные попытки каждые 15
секунд. То же самое будет происходить при разрыве соединения:
каждые 15 секунд CommView будет пытаться восстановить его. Если
соединение успешно установлено, CommView будет передавать
захватываемые пакеты по мере их прихода, в режиме реального
времени.
Формат данных
Данные передаются в формате NCF. Описание формата смотрите в
последней главе данного раздела.
Передача пакетов
Ваше приложение может не только принимать пакеты, но и посылать их,
аналогично генератору пакетов. Данные могут быть переданы в
CommView с помощью все того же TCP-соединения, через которое
происходил прием. Формат данных прост – двухбайтовое беззнаковое
целое число, затем сам пакет. Если адаптер не открыт или он не
поддерживает прием пакетов, пакет отбрасывается без
уведомления.
Примеры проектов
Ниже приведены два простых примера программ, ожидающих входящих
соединений, выделяющих пакеты из потока и отображающих "сырые"
данные.
·http://www.tamos.ru/products/commview/samp_mirr_c5.zip.
Проект в Visual Studio с исходным текстом на C++.
·http://www.tamos.ru/products/commview/samp_mirr_d5.zip.
Проект на Delphi с исходником на Pascal. Для компиляции проекта вам
понадобятся ICS-компоненты от Francois Piette, которые доступны
на
http://www.overbyte.be.
Пропускная способность (Bandwidth)
При пересылке данных на удалённый компьютер, убедитесь, что линия
связи между ними имеет достаточную пропускную способность, чтобы
передать все перехваченные данные. Если CommView собирает данные с
интенсивностью 500 кб/сек, а линия связи способна передавать только
50кб/сек, неизбежно возникнут "заторы", приводящие к разным
неприятностям (например, в зависимости от версии Windows, winsock
может прекратить передавать данные вообще). Если вам требуется
более гибкое решение, использующее буферизацию и дистанционное
управление – попробуйте воспользоваться
CommView Remote
Agent.
|