Вы можете передать флаг SOCK_RAW
, когда создаете сокет, используя WSASocket () (или socket () , по вашему усмотрению).Более подробно это описано в Необработанные сокеты TCP / IP в MSDN.
С этой страницы -
Как только приложение создает сокет типа SOCK_RAW, этот сокет может использоваться для отправки и получения данных.Все пакеты, отправленные или полученные в сокете типа SOCK_RAW, обрабатываются как дейтаграммы в неподключенном сокете.
Следует отметить, что корпорация Майкрософт покалечила реализацию своих необработанных сокетов после Windows XP SP2;подробности описаны на странице MSDN в разделе Limitations on Raw Sockets:
- Данные TCP не могут быть отправлены через необработанные сокеты.
- дейтаграммы UDP с недопустимым адресом источника не могут бытьотправлено через сырые розетки.
- Вызов функции bind с необработанным сокетом недопустим.
Если эти ограничения слишком ограничительны, вы можете вернуться к ранее рекомендованной библиотеке winpcap.