【发布时间】:2015-08-13 20:34:04
【问题描述】:
这就是我接收 UDP 数据报的方式(缩短了,效果很好):
namespace ba = boost::asio;
ba::io_service _ioService;
ba::ip::udp::socket _socket(_ioService)
ba::ip::udp::endpoint senderEndpoint;
_socket.async_receive_from(ba::buffer(receiveBuffer, receiveBuffer.size()),
senderEndpoint, &handleReceive);
有没有办法限制我的async_receive_from 仅从一个远程 IP 地址接收数据而不消耗数据?
有一个solution 读取数据,如果从错误的远程端点将其丢弃。我一开始就想避免阅读它。
背景:我有多个具有不同 IP 地址的客户端设备与我的应用程序通信(只有一个 IP 地址)。应用程序一次只对与一个远程客户端通信感兴趣。
【问题讨论】:
-
您无法使用 Boost ASIO 进行窥视。参见例如here for a workaround。另一种解决方法是接收所有数据包,并将它们(带有对等信息)放入容器中,然后只从该容器中“获取”想要的数据包。
标签: c++ udp boost-asio