Мне нужно прослушивать несколько портов UDP и обрабатывать полученные датаграммы как Ethernet-фреймы. Я не могу думать о каком-либо другом решении, кроме создания сокета SOCK_RAW для приема кадров Ethernet, проверить, является ли то, что я получил, датаграммой UDP, а затем извлечь дейтаграмму для идентификации UDP-порта.Получение Ethernet-кадров из UDP-порта
Есть ли лучший способ? Есть ли какой-то сокет, который позволит мне получать дейтаграммы UDP на конкретном порту и все еще обращаться ко всему кадру Ethernet?
Это ответ, который вы ищете. Вы не можете получить доступ к кадру без записи драйвера устройства, так как NIC имеет дело со всей информацией заголовка, а затем передает пакет до ядра (т. Е. Ядро даже не видит заголовок, который я не думаю!). Но на самом деле вам не нужен заголовок для получения hte UDP-порта, поскольку он находится в пакете UDP, поскольку порт действительно отличает, к какой программе должен быть отправлен пакет. – Magn3s1um