Получение многоадресной рассылки из разных портов - PullRequest
0 голосов
/ 23 ноября 2011

В основном у меня есть приложение, которое создает, скажем, 5 многоадресных сокетов на одном и том же интерфейсе, и в одном и том же приложении каждый сокет привязывается к разному IP-адресу / порту многоадресной рассылки.Когда какой-либо из этих сокетов отправляет сообщение, остальные 4 сокета в приложении заканчивают чтение этого сообщения.Это нормальное поведение?

Это происходит в Ubuntu 11.10 с использованием boost.asio и gcc 4.6.

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Это нормально в некоторых операционных системах ;-) Вы можете отключить его с помощью setsockopt() и опции IP_MULTICAST_LOOP.

0 голосов
/ 24 ноября 2013

Звучит странно для меня.Если вы используете UDP, то вы должны получать только сообщения, связанные с номером порта сокета UDP.Конечно, если вы используете многоадресную рассылку на уровне IP, тогда номер порта не будет иметь значения.

Совершенно верно (согласно EJP), что петля заставит программы получать свои собственные сообщения, если петля не будетотключен.Однако номера портов UDP все еще применяются.Многоадресное UDP-сообщение, отправленное на порт x, не должно приниматься сокетом, прослушивающим порт y.

...