Как определить группу многоадресной рассылки отправителя и пару портов из полученного многоадресного сообщения

Я написал службу (C ++), которая работает на компьютере AIX и получает многоадресные сообщения от удаленного хоста (моя служба присоединяется к предопределенной группе многоадресной рассылки&пара портов).

В последнее время меня попросили обработать многоадресные сообщения, полученные от другого хоста (в другой многоадресной группе).&порт, на том же сокете. Хотя я могу настаивать на том же порте.

Проблема в том, что сообщения, полученные от каждого хоста, должны обрабатываться по-разному.

Как я могу различить эти сообщения? Есть ли возможность получить группу многоадресной рассылки отправителя?&пара портов из сокета / полученные сообщения?

1

Решение

В то время как вы можете идентифицировать адрес удаленного хоста (не многоадресной группы!) С помощью recvfrom (); Как правило, не рекомендуется выполнять различные действия для другого хоста с прослушиванием одного и того же порта. Это против правила наименьшего удивления.

Таким образом, краткий ответ заключается в разграничении адреса удаленного хоста.

Если вы хотите различать многоадресные группы на одном и том же порту, вам нужно связать несколько сокетов с адресом многоадресной группы.

Код выглядит так:

addr.set(239,0,0,1,8888);
udp.socket();
udp.joinmcast(&addr);
udp.bind(&addr);
0

Другие решения