Я программирую прокси-приложение UDP для Windows на C++, которое отправляет и получает пакеты UDP с Winsock. Проблема в том, что мне нужно работать с пакетом ENTIRE, а не только с заголовками данных и UDP и/или IP. Я пробовал сырые сокеты с IP_HDRINCL (возможно, с ошибкой), но он все еще отрубает некоторую информацию из пакета. Есть ли какая-то библиотека или что-то, если это невозможно в winsock, это позволит мне это сделать?Получение всего пакета UDP
ответ
Для получения пакетов WinPCAP позволит вам выполнить все это и многое другое, и есть пример кода here, который показывает, как захватить все пакеты, поступающие на интерфейс.
Я видел, что WinPCAP позволит вам отправлять пакеты в точности так, как вы хотите, но можете ли вы получать пакеты так же, как winsock, с bind() и все остальное? Я подумал, что с WinPCAP вам нужно было получить все пакеты, которые отправились на любой порт вашего компьютера. – Chroma
Не обязательно - посмотрите на второй пример вышеприведенной ссылки на код кода, в котором показано, как установить фильтр, который позволит вам получать пакеты, которые вас интересуют. И нет, вы не необходимо использовать bind() и т. д .; вы просто получаете необработанные пакетные данные. –
Я не разбираюсь в этой области вычислений, но не получал бы каждый пакет, который получил ваш компьютер, и просто фильтровать его гораздо медленнее, чем просто получать те, которые предназначены для вас? – Chroma
Вот некоторые фильтровать пакеты в окнах:
- WinDivert Свободный открытый проект работы на Windows 7, 2008 или верхней. сетевого уровня.
- WinpkFilter 3.0 Коммерческий, Windows XP и верхний. datalink layer
- pcausa, Commercial. datalink layer
- Windows Filtering Platform Packet Modification Sample Образец , чтобы создать драйвер выноски, используемый WinDivert, теперь вы должны установить драйвер ядра ядра. сетевого уровня.
- 1. Получение адреса назначения пакета UDP
- 2. Как обеспечить получение всего пакета
- 3. Получение TTL входящего пакета UDP в Python
- 4. Socket: Чтение UDP-пакета
- 5. Создание пользовательского UDP-пакета
- 6. Полученная длина пакета UDP
- 7. Заказ UDP-пакета
- 8. Заполнение пакета UDP пакета до 60 байт
- 9. Получение исходного IP-адреса пакета датаграммы UDP Netty 4.1
- 10. Получение пакета udp на назначенной сетевой карте C#
- 11. java: получение пакета UDP и как их сохранить
- 12. Получение пакета UDP от Arduino в CrossbarServer в Python
- 13. выравнивание размера пакета UDP Java
- 14. Как установить формат пакета udp?
- 15. Повторная сборка фрагментированного пакета UDP
- 16. Отправка пакета UDP по interupt
- 17. Изменить максимальный размер пакета UDP
- 18. Получить латентность пакета (TCP \ UDP)
- 19. Задержка приема пакета UDP Datagram
- 20. Ошибка UDP пакета Android: почему?
- 21. Отправка пакета UDP в C#
- 22. UDP Socket возвращает часть пакета
- 23. java udp обнаруживает повреждение пакета
- 24. Создание UDP-пакета в Python
- 25. Отправка пакета UDP всем в локальной сети?
- 26. Получение ответа через UDP
- 27. получение сообщения udp отсутствует
- 28. UDP Отправка и получение
- 29. Получение пакетов в UDP
- 30. Получение сообщений UDP
Возможно, вы могли бы объяснить, какая еще информация вам нужна, которая не предоставляется API-интерфейсом, который вы указали. –
С winsock, как правило, он просто передает вам данные, с информацией из заголовков в некоторой структуре. При использовании сырых сокетов он захватывает заголовок Ethernet, если память служит. Я просто хочу абсолютный простой, полный, полный пакет, а не модификацию вообще. – Chroma