我正在开发一个点对点通信网络,用于在工业环境中通过 LAN 使用。有些消息只是异步的,不需要响应。其他是请求-响应。请求消息(和异步消息)被发送到一个多播组,并且对请求的回复被单播发送。因此,每个端点接收发送到多播组的 UDP 数据包,并且还接收使用纯单播发送给它的消息。
到目前为止它工作正常,但在 boost::asio 中似乎没有任何方法可以找出接收到的 UDP 数据包的目标地址(使用 socket.async_receive_from)——无论它是发送到多播组还是实际界面。我可以使用消息的内容来推断它是通过多播还是单播发送的,但如果还能够检查目标地址,那就太好了。
我们目前使用的是 Windows 7,但将来会过渡到 Linux。
有没有办法找到使用 boost::asio 接收的 UDP 数据包的目标地址?