我已经编写了一个服务(C ++),该服务在AIX机器上运行,并从远程主机接收多播消息(我的服务加入了预定义的多播组和端口对)。

最近,有人要求我处理从不同主机(在同一套接字上的不同组播组和端口上的同一主机上)收到的多播消息。尽管我可以坚持使用同一端口。

问题是,必须分别处理从每个主机接收的消息。

如何区分这些消息?是否可以从套接字/接收到的消息中检索发件人的多播组和端口对?

最佳答案

虽然可以使用recvfrom()标识远程主机的地址(不是多播组!);在监听相同端口的不同主机上执行不同操作通常不是一个好主意。这违反了最不惊奇的规则。

因此,简短的答案是区分远程主机地址。

如果要区分同一端口上的多播组,则必须将多个套接字与该多播组地址绑定。

代码如下:

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

关于c++ - 如何从收到的多播消息中确定发送方多播组端口对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23978309/

10-13 06:59