Необработанная реализация сокетов в Windows? - PullRequest
2 голосов
/ 17 февраля 2009

Мне нужно вручную создать заголовки TCP / IP для моего приложения. Для этого я использовал Raw Socket. Моя операционная система - win xp (SP3).

Мой код компилируется нормально :), но выдает ошибку времени выполнения:

Initialising Winsock...Initialised successfully. Creating Raw TCP Socket...Raw TCP Socket Created successfully. Setting the socket in RAW mode...Successful. Enter hostname : 192.168.1.152

Resolving Hostname...Resolved. Enter Source IP : 192.168.1.151

Sending packet... Error sending Packet : 10022

Я установил IP_HDRINCL на 1. Что я делаю не так? Я тоже выключил брандмауэр, но все равно получил тот же результат.

Ответы [ 4 ]

8 голосов
/ 17 февраля 2009
2 голосов
/ 16 мая 2010

Microsoft ограничил RAWSockets, но просто используйте WinPcap http://www.winpcap.org/. При этом вы можете отправлять все виды пакетов.

2 голосов
/ 17 февраля 2009

Я предлагаю использовать WinPcap для этой цели. Даже если вы поймете, как сделать это правильно с Win32 API, это будет ужасно медленно.

Я успешно использовал WinPcap для ввода пакетов в порт Gigabit Ethernet, так быстро, как аппаратные средства могут обработать.

2 голосов
/ 17 февраля 2009

не ответ, но, надеюсь, начало ...

С MSDN :

WSAEINVAL 10022 Неверный аргумент. Был указан неверный аргумент (например, указание неверного уровень функции setsockopt). В в некоторых случаях это также относится к текущее состояние сокета - для экземпляр, вызывающий accept на сокете это не слушание.

Каковы аргументы вашего звонка?


Я нашел это обновление для необработанных сокетов:

В Windows XP с пакетом обновления 2 (SP2) и Windows Vista, возможность отправлять трафик через необработанные сокеты были ограничены несколькими способами:

  • Данные TCP не могут быть отправлены через необработанные сокеты.

Не уверен, что это относится к XP SP3, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...