2010-08-15 8 views
1

Я программирую прокси-приложение UDP для Windows на C++, которое отправляет и получает пакеты UDP с Winsock. Проблема в том, что мне нужно работать с пакетом ENTIRE, а не только с заголовками данных и UDP и/или IP. Я пробовал сырые сокеты с IP_HDRINCL (возможно, с ошибкой), но он все еще отрубает некоторую информацию из пакета. Есть ли какая-то библиотека или что-то, если это невозможно в winsock, это позволит мне это сделать?Получение всего пакета UDP

+1

Возможно, вы могли бы объяснить, какая еще информация вам нужна, которая не предоставляется API-интерфейсом, который вы указали. –

+0

С winsock, как правило, он просто передает вам данные, с информацией из заголовков в некоторой структуре. При использовании сырых сокетов он захватывает заголовок Ethernet, если память служит. Я просто хочу абсолютный простой, полный, полный пакет, а не модификацию вообще. – Chroma

ответ

3

Для получения пакетов WinPCAP позволит вам выполнить все это и многое другое, и есть пример кода here, который показывает, как захватить все пакеты, поступающие на интерфейс.

+0

Я видел, что WinPCAP позволит вам отправлять пакеты в точности так, как вы хотите, но можете ли вы получать пакеты так же, как winsock, с bind() и все остальное? Я подумал, что с WinPCAP вам нужно было получить все пакеты, которые отправились на любой порт вашего компьютера. – Chroma

+0

Не обязательно - посмотрите на второй пример вышеприведенной ссылки на код кода, в котором показано, как установить фильтр, который позволит вам получать пакеты, которые вас интересуют. И нет, вы не необходимо использовать bind() и т. д .; вы просто получаете необработанные пакетные данные. –

+0

Я не разбираюсь в этой области вычислений, но не получал бы каждый пакет, который получил ваш компьютер, и просто фильтровать его гораздо медленнее, чем просто получать те, которые предназначены для вас? – Chroma

0

Вот некоторые фильтровать пакеты в окнах:

  1. WinDivert Свободный открытый проект работы на Windows 7, 2008 или верхней. сетевого уровня.
  2. WinpkFilter 3.0 Коммерческий, Windows XP и верхний. datalink layer
  3. pcausa, Commercial. datalink layer
  4. Windows Filtering Platform Packet Modification Sample Образец , чтобы создать драйвер выноски, используемый WinDivert, теперь вы должны установить драйвер ядра ядра. сетевого уровня.
Смежные вопросы