我编写了一个在AIX机器上运行的服务(C ++),并从远程主机接收多播消息(我的服务加入了预定义的多播组和端口对)。
最近,我被要求处理从不同主机(在同一套接字上的不同多播组和端口上)收到的多播消息。虽然我可以坚持使用相同的端口。
问题是,从每个主机收到的消息必须以不同方式处理。
如何区分这些消息?是否有可能从套接字/已接收消息中检索发送方的多播组和端口对?
答案 0 :(得分:0)
虽然您可以使用recvfrom()识别远程主机的地址(不是多播组!);通过监听同一端口为不同的主机执行不同的操作通常不是一个好主意。它违背了最不意外的规则。
所以简短的回答是区分远程主机地址。
如果要区分同一端口上的多播组,则必须使用多播组地址绑定多个套接字。
代码如下所示:
addr.set(239,0,0,1,8888);
udp.socket();
udp.joinmcast(&addr);
udp.bind(&addr);