我正在尝试使用boost asio udpSocket实现一个函数,它等待数据准备好被读取,或者等到超时到期。
使用asyc_read和async_wait,我可以做类似的事情,但我必须读取数据。我想在不读取数据的情况下执行相同的
这样可以在很多情况下更容易地使用udpSocket类,但是考虑到udpSocket接口,我无法弄清楚如何实现这样的功能,无需手动缓冲数据,并重写sync_read函数
最好,Dd
答案 0 :(得分:2)
尝试使用选项async_receive
(link)来调用message_peek
(link)。这样你可以像你想要的那样设置一个超时绑定读取,但不会从接收缓冲区中提取任何数据。
有关详细信息,请阅读MSDN description of MSG_PEEK(这是message_peek
的Windows特定实现...您需要向下滚动到文章的底部)。这应该会让你更好地了解它的工作原理,尽管你应该查阅你的系统文档,但绝对可以肯定。