Представь есть процесс A
и процессы B
а также C
и я хочу, чтобы все они передавали групповые сообщения группам X.Y.Z.W
в порту P
, а также A
одновременно слушает эти сообщения в этой группе. Это возможно для A
получать сообщения от B
а также C
не получив своего? Другими словами, если я отключу обратную связь (для того, чтобы A
не получать сообщения, которые он многоадресный) будет по-прежнему получать сообщения от B
а также C
или это фактически приведет к тому, что он перестанет даже слушать X.Y.Z.W
в порту P
?
Да, это будет работать, как вы описываете. Мы используем это в RSP [1] точно так же, как и для любой надежной многоадресной рассылки.
[1] http://www.equalizergraphics.com/documents/design/multicast.html#RSPИз того, что я могу сказать из документации, IP_MULTICAST_LOOP
Опция работает на уровне хоста, а не на отдельном сокете. Поэтому, если вы отключите его, никакие процессы на отправляющем хосте не получат многоадресные пакеты; если вы включите его, все процессы на отправляющем хосте получат его.
Что A может сделать, это проверить IP-адрес источника и порт пакетов, которые он получает. Если они совпадают с локальным IP-адресом и портом отправляющего сокета, он должен их игнорировать.