Авторские статьи УЧИМСЯ ИСПОЛЬЗОВАТЬ WINSOCK. ЧАСТЬ II.

Discussion in 'Статьи' started by slesh, 14 Jun 2009.

  1. nikvasi

    nikvasi New Member

    Joined:
    25 Nov 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Добрый день, Slesh,

    подскажите пожалуйста как можно передавать пакеты через ТСР соединение,
    но с определенного IP/порта (перед функцией connect() задать локальный хост/порт).

    При использовании функции bind() перед функцией connect() (началом ТСР сессии),
    пакеты с данными не отправляются через сокет (видно в нет мониторе).
    Хотя сама ТСР сессия ничем не отличается от обычной.

    Видимо функция bind() рассчитана только на входящие TCP и входящие/исходящие UDP соединения.


    Подскажите пожалуйста, может быть можно решить данную проблему каким-нибудь другим способом?
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Это можно сделать было тока через сырые сокеты. Но увы последняя ОС из ряда Windows которая позволяла это делать - это была Windows 2000
    На Xp и вышел толкьо использовать драйвер или WinPCap
     
  3. nikvasi

    nikvasi New Member

    Joined:
    25 Nov 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Огромное спасибо.

    Уже три дня ищу инфу и все никак!

    А нельзя для winsock какой-нибудь функцией задать интерфейс или адаптер для отправки пакетов,
    для которого Апишник уже определен системой?
     
  4. galakt_irk

    galakt_irk New Member

    Joined:
    30 Nov 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Может кто подскажет.. У меня такая задача - необходимо отправить данные с уже созданного в системе сокета. Т.е. есть некая клиентская программа.. когда она работает - получается же что в системе есть сокет - через который эта программа обменивается с сервером. У меня такие мысли - что тут получается не надо создавать в программе свой сокет - а надо как-то получить доступ к нужному уже созданному сокету и от него посылать то что мне нужно. Есть такой сниффер - WPEPro - он по сути это и делает, т.е. это вполне возможно. Мне только надо реализовать это самому)
     
  5. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Довольно непросто это реализовать. Примерный алгоритм:

    1) Сначало нужно получить список всех сокетов в системе. Примеры кода можно найти в инете.
    2) Скопировать нужный сокет в свой процесс при помощи DuplicateHandle.
    3) Использовать сокет стандартным способом.
     
  6. galakt_irk

    galakt_irk New Member

    Joined:
    30 Nov 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Спасибо) - буду пробовать
     
  7. Radiator

    Radiator Active Member

    Joined:
    17 Mar 2009
    Messages:
    394
    Likes Received:
    143
    Reputations:
    24
    спасибо за статью.
    будем учиться.