2012-03-14 2 views
4

Существует немало примеров для приема многоадресных сообщений с помощью сетевого интерфейса (NIC, например eth0, 127.0.0.1 и т. Д.). Однако несколько обсуждений/примеров о том, как отправлять сообщения многоадресной рассылки (UDP) на конкретный интерфейс, например, локальный цикл (127.0.0.1) вместо eth0 по умолчанию.Как указать интерфейс SEND для многоадресной рассылки в Python?

фона: RedHat Linux, Python, 224.1.1.1 5005 пример

Python код в Multicast in Python

Аналогичное обсуждение для IPv6 How to send multicast packets via a specfic interface in Linux

Аналогичное обсуждение для Windows, How to Multicast (send) to first NIC?

Заранее спасибо.

ответ

4

Вопрос, который вы связали How to Multicast (send) to first NIC? упоминает, что вы могли бы использовать IP_MULTICAST_IF:

sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.inet_aton(addr)) 
+0

Он работает. Благодаря! – user1268888

+0

Не забудьте увеличить TTL – e271p314

+0

@ e271p314: Я не помню, о чем идет речь, но [пример кода, связанный в вопросе, похоже, обрабатывает TTL уже (с 2009 года)] (http://stackoverflow.com/вопросы/603852/многоадресного-в-питон). Мой ответ устанавливает один параметр, то есть он отвечает только на вопрос в заголовке. – jfs