我正在处理多播UDP消息。我需要将接收到的数据包的目标IP地址与 channel 的多播地址进行比较,接收方应该在监听以确保它没有接收到通过其他多播 channel 多播的消息。

我知道我可以通过使用recvmsg()使用UNIX套接字来找到目标IP地址,然后执行此处提到的所有工作:Get destination address of a received UDP packet

但是我一直在使用Boost库的ASIO套接字,尽管有与recvfrom()funcn相对应的receive_from(),但是我找不到具有与recvmsg()类似功能的任何func。有人可以在这里帮我吗。是否有办法在boost库中找到接收到的数据包的目标IP地址?

最佳答案

让我们退后一步。为什么您认为需要查看目标地址并在用户空间中对其进行过滤?操作系统不应该为您这样做吗?大概应该!

您实际上正在收到不需要的数据报吗?如果是这样,则可能是因为您没有对监听器进行足够严格的设置。例如,您应该绑定(bind)并仅监听特定的多播组(地址),端口和接口(interface)。也许您忽略了其中的一部分?如果不是那样,也许您会解释发生了什么,这使您提出这个问题。

10-07 19:07
查看更多