提升 asio udp waitForReadyRead

发布于 2024-08-11 05:46:50 字数 249 浏览 3 评论 0 原文

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

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

这将允许在许多情况下更轻松地使用 udpSocket 类,但考虑到 udpSocket 接口,我无法想象出如何实现这样的功能,不用手动缓冲数据,

最好重写一个sync_read函数,dd

I am trying to implement a function using boost asio udpSocket, that waits until data is ready to be read, or waits until a timeout expires.

using asyc_read and a async_wait, I can do something similar, but I have to read the data. I would like to do the same without reading the data

This would allow a much easier use of the udpSocket class in many situations, but given the the udpSocket interface, I cannot figure out how to implement such a function, without manually buffering the data, and rewriting a sync_read function

best, Dd

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

開玄 2024-08-18 05:46:50

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

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

Try calling async_receive (link) using the option message_peek (link). That way you can set up a timeout-bound read like you were wanting, but without pulling any data off of the receive buffer.

For more details, read the MSDN description of MSG_PEEK (which is the Windows-specific implementation of message_peek...you need to scroll down to the bottom of the article). That should give you a good idea of how it works in more detail, though you should consult your system's documentation to be absolutely certain.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文