Как отправить пакет UDP с определенного интерфейса в Linux? - PullRequest
7 голосов
/ 03 января 2011

Как мне отправить пакет UDP с определенного интерфейса в Linux, используя C?Должен ли я использовать связывание?Можно ли отправить UDP с интерфейса, не имеющего IP-адрес?

Спасибо.

Ответы [ 3 ]

8 голосов
/ 03 января 2011

Используйте связывание.Нельзя отправлять пакеты UDP через интерфейс, который не имеет IP-адреса, поскольку UDP использует Интернет-протокол, а Интернет-протокол требует IP-адрес.

5 голосов
/ 20 января 2011

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

Кроме того, вы можете установить опцию IP_PKTINFO и использовать sendmsg для отправки, задав in_pktinfo s ipi_ifindex для индекса вашего интерфейса.

0 голосов
/ 20 января 2011

Вам необходимо использовать опцию сокета IP_MULTICAST_IF.

См. Здесь: Multicast-HOWTO-6.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...