在boost库中查找收到的UDP消息的目标IP地址

时间:2011-08-30 22:57:25

标签: linux sockets networking udp boost-asio

我正在使用多播UDP消息。我需要将接收到的数据包的目标IP地址与通道的多播地址进行比较,接收器应该正在侦听以确保它没有接收通过不同多播通道进行多播的消息。

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

但我一直在使用boost库ASIO套接字,虽然有对应于recvfrom()funcn的receive_from()但是我找不到任何具有与recvmsg()类似功能的func。任何人都可以帮助我..有没有办法找到升级库中收到的数据包的目标IP地址??

2 个答案:

答案 0 :(得分:0)

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

您实际上是否收到了您不想要的数据报?如果是这样,可能是因为你没有对听众进行足够严格的设置。例如,您应该绑定并仅侦听特定的多播组(地址),端口和接口。也许你忽略了指明其中的一部分?如果不是这样,也许你会解释发生了什么让你问这个问题。

答案 1 :(得分:0)

无法访问目标地址的典型解决方法是为每个多播组打开一个套接字,并将套接字与应用程序中的地址匹配。