我已经编写了一个在AIX机器上运行并从远程主机接收多播消息的服务(C++) (我的服务加入了一个预定义的多播组和端口对)。
最近,我被要求处理从不同主机接收的多播消息(在不同的多播组和端口上,在同一套接字上)。不过,我可以坚持在同一个港口。
问题是,从每个主机接收的消息必须以不同的方式处理。
如何区分这些消息?是否有可能从套接字/接收的消息中检索发送者的多播组和端口对?
发布于 2014-06-01 17:50:34
虽然您可以识别远程主机的地址(而不是多播组!)使用recvfrom();对侦听相同端口的不同主机执行不同的操作通常不是一个好主意。这违背了最小惊讶的原则。
因此,简短的答案是区分远程主机地址。
如果要区分同一端口上的组播组,则必须将多个套接字与组播组地址绑定。
代码如下所示:
addr.set(239,0,0,1,8888);
udp.socket();
udp.joinmcast(&addr);
udp.bind(&addr);https://stackoverflow.com/questions/23978309
复制相似问题