我编写了一个在 AIX 机器上运行并从远程主机接收多播消息的服务 (C++)(我的服务加入了预定义的多播组和端口对)。
最近,我被要求处理从不同主机接收的多播消息(在不同的多播组和端口上,在同一个套接字上。尽管我可以坚持使用同一个端口。
问题是,必须以不同方式处理从每个主机接收到的消息。
如何区分这些消息?是否有可能从套接字/接收到的消息中检索发件人的多播组和端口对?
最佳答案
虽然您可以使用 recvfrom() 识别远程主机的地址(不是多播组!);在监听相同端口的情况下对不同的主机执行不同的操作通常不是一个好主意。这违反了最不意外规则。
所以简短的回答是区分远程主机地址。
如果要区分同一端口上的多播组,则必须将多个套接字绑定(bind)到多播组地址。
代码如下所示:
addr.set(239,0,0,1,8888);
udp.socket();
udp.joinmcast(&addr);
udp.bind(&addr);
关于c++ - 如何从收到的多播报文中判断发送者的多播组端口对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978309/