Можем ли мы выбрать конкретный интерфейс при использовании сырых сокетов?

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

2 ответа

Решение

Когда вы связываете сокет, вы делаете это по IP. Но, надеюсь, ваши интерфейсы имеют разные IP-адреса. Если это так, вы можете сначала вызвать getifaddrs и найти адрес нужного вам интерфейса.

Мы можем привязать уже открытый сокет к данному интерфейсу, используя следующее.

  1. Используйте привязку на сокете.
  2. Используйте setsockopt. Используйте опцию SO_BINDTODEVICE.
Другие вопросы по тегам