提升asio udp waitForReadyRead

时间:2009-11-13 10:56:50

标签: sockets boost udp timeout boost-asio

我正在尝试使用boost asio udpSocket实现一个函数,它等待数据准备好被读取,或者等到超时到期。

使用asyc_read和async_wait,我可以做类似的事情,但我必须读取数据。我想在不读取数据的情况下执行相同的

这样可以在很多情况下更容易地使用udpSocket类,但是考虑到udpSocket接口,我无法弄清楚如何实现这样的功能,无需手动缓冲数据,并重写sync_read函数

最好,Dd

1 个答案:

答案 0 :(得分:2)

尝试使用选项async_receivelink)来调用message_peeklink)。这样你可以像你想要的那样设置一个超时绑定读取,但不会从接收缓冲区中提取任何数据。

有关详细信息,请阅读MSDN description of MSG_PEEK(这是message_peek的Windows特定实现...您需要向下滚动到文章的底部)。这应该会让你更好地了解它的工作原理,尽管你应该查阅你的系统文档,但绝对可以肯定。