2

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

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

这将允许在许多情况下更轻松地使用 udpSocket 类,但鉴于 udpSocket 接口,我无法弄清楚如何实现这样的功能,而无需手动缓冲数据并重写 sync_read 函数

最好的,dd

4

1 回答 1

2

尝试使用选项(链接async_receive)调用(链接)。这样你就可以像你想要的那样设置一个超时限制的读取,但不需要从接收缓冲区中提取任何数据。message_peek

有关更多详细信息,请阅读MSG_PEEK 的 MSDN 描述(这是 Windows 特定的实现message_peek……您需要向下滚动到文章底部)。这应该可以让您更详细地了解它是如何工作的,尽管您应该查阅系统的文档以绝对确定。

于 2009-11-16T22:20:39.960 回答