Как мне отправить пакет UDP с определенного интерфейса в Linux, используя C?Должен ли я использовать связывание?Можно ли отправить UDP с интерфейса, не имеющего IP-адрес?
Спасибо.
Используйте связывание.Нельзя отправлять пакеты UDP через интерфейс, который не имеет IP-адреса, поскольку UDP использует Интернет-протокол, а Интернет-протокол требует IP-адрес.
Вы можете привязать сокет к определенному интерфейсу с помощью опции сокета SO_BINDTODEVICE, однако для этого требуются права суперпользователя.
SO_BINDTODEVICE
Кроме того, вы можете установить опцию IP_PKTINFO и использовать sendmsg для отправки, задав in_pktinfo s ipi_ifindex для индекса вашего интерфейса.
IP_PKTINFO
sendmsg
in_pktinfo
ipi_ifindex
Вам необходимо использовать опцию сокета IP_MULTICAST_IF.
См. Здесь: Multicast-HOWTO-6.html