我使用boost :: asio :: ip :: udp :: socket通过socket的async_receive_from方法接收UDP数据包。
代码工作正常,唯一的问题是,在我处理数据包的时候,还有更多来创建一个队列(缓冲区)来处理。我的程序虽然必须接收自处理开始以来收到的所有数据包,但它只能侦听最新的数据包。
示例:
有没有办法丢弃中间的数据包? 谢谢!
答案 0 :(得分:1)
使用仅包含单个数据报的缓冲区。
继续读入缓冲区,直到没有更多的数据报可供阅读。
如果您至少读取了一个数据包,请在缓冲区中处理数据报。
转到第2步。
请注意,UDP是数据报协议,而不是数据包协议。单个UDP数据报可以分成多个数据包。
答案 1 :(得分:0)
我认为这可以很简单:
async_receive_from
直到收到包裹。available
方法以确定套接字中是否有更多数据。