c++ - 如何从收到的多播报文中判断发送者的多播组端口对

标签 c++ multicast aix

我编写了一个在 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/

相关文章:

ffmpeg - 使用 FFMPEG 从 UDP Multicast MPEG TS 流重新编码 AUDIO 的奇怪问题

linux - 请详细告诉我以下脚本

linux - 将值从一个 shell 脚本传递到另一个 shell 脚本

c++ - aix 7.1 中缺少 getopt.h

stream - 在 HTML5 中播放 UDP 流

c++ - 动态删除代码?

c++ - C++ 中类似 GameMaker 的功能

c++ - 自定义容器中括号运算符的常量

arrays - golang 在多播 ip 上发送 json

c++ - 在 MFC DLL 中导出返回 vector 的函数