从单个远程端点读取UDP数据而不会丢失数据

时间:2015-08-13 12:00:02

标签: c++ udp boost-asio

这是我收到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地址)。应用程序只对一次与一个远程客户端通信感兴趣。

1 个答案:

答案 0 :(得分:2)

只需向该IP地址发出connect()即可。不要问我如何在boost :: asio中做到这一点,但它可以在BSD套接字级别。它会导致来自其他IP地址的所有数据报被丢弃,并且还允许您使用send()而不是sendto()。您可以通过连接到INADDR_ANY来撤消它,我认为,无论如何都记录了它。