Альтернатива Winsock (нет, не WinPCAP) - PullRequest
1 голос
/ 16 августа 2010

Существуют ли жизнеспособные альтернативы Winsock для C ++? Причина, по которой я нуждаюсь, заключается в том, что необработанные сокеты Winsock не работают должным образом (нет, это невозможно исправить, не тратьте впустую свое время, спрашивая), и WinPCAP может только отслеживать сетевой трафик, но не принимать пакеты. Мне нужно что-то, что может принимать полные пакеты, включая любые IP, UDP, TCP заголовки и т. Д. Существует ли такая вещь, и если нет, то почему?

Ответы [ 2 ]

6 голосов
/ 16 августа 2010

WinPCAP может только отслеживать сетевой трафик, но фактически не принимать пакеты

Отслеживание сетевого трафика эквивалентно получению пакетов.Это именно то, что делают такие инструменты, как Wireshark: считывание сетевой карты и восстановление границ пакетов.

Мне нужно что-то, что может принимать полные пакеты, включая любые IP, UDP, TCP заголовки и т. Д.

Это очень возможно при использовании Winsock API.Посмотрите на функцию WSAIoctl, в частности, опцию SIO_RCVALL - включение этой опции доставит ВСЕ пакеты, полученные через интерфейс, к вашему сокету.И это необработанные IP-пакеты, начинающиеся с IP-заголовка.

1 голос
/ 16 августа 2010

Вы можете посмотреть на Boost.Asio . C ++ кроссплатформенная библиотека ввода-вывода. Поддержка UDP, TCP и ICMP.

...