【问题标题】:How to determine sender's mulicast group&port pair from the received multicast message如何从收到的组播报文中判断发送方的组播组端口对
【发布时间】:2014-07-21 14:43:04
【问题描述】:

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

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

问题是,必须以不同方式处理从每个主机接收到的消息。

如何区分这些消息?是否有可能从套接字/接收到的消息中检索发送者的组播组和端口对?

【问题讨论】:

    标签: c++ multicast aix


    【解决方案1】:

    虽然您可以使用 recvfrom() 来识别远程主机的地址(不是多播组!);对于侦听相同端口的不同主机执行不同操作通常不是一个好主意。这违反了最小意外规则。

    所以简短的回答是区分远程主机地址。

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

    代码如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多