локальный IP-адрес TCP-соединения
От: onyx2 Украина  
Дата: 09.11.06 12:48
Оценка:
Приветствую всех.
Мне нужно определить локальный IP-адрес TCP-соединения в tdi-фильтре.

Сейчас я подробнее изложу, что меня интересует.

Есть такая простенькая программка — TCP-сервер

  //слушаем все интерфейсы INADDR_ANY
  bind(...);
  listen(...);

  //ждем подключения клиента
  int connSocket= (int)accept(...);

  sockaddr_in  sock = {0};
  int sizeSock = sizeof(sockaddr_in );
  getsockname(connSocket, (sockaddr*)&sock, &sizeSock);
  OutputDebugString("\nlocal IP: "), OutputDebugString(inet_ntoa(sock.sin_addr)), OutputDebugString("\n");


После выполнения ф-ции bind (или точнее во время ее выполнения) в tdi-фильтр приходит IRP_MJ_CREATE (создание адресного объекта) из которого я выгребаю локальный IP-адрес, в нашем случае получается он равен нулю, т.к. tcp-сервер слушает все интерфейсы.

А вот после того как к Tcp-серверу подключился клиент, в debug view мы видем следующее:
local IP: 192.168.2.99


Вопрос, где в драйвере можно отловить данный локальный адрес? Т.е. какой из TDI-запросов следует обработать, чтобы его получить?
www.cubik.biz
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.