boost::asio-窥探套接字缓冲区

boost::asio - peeking into a socket buffer

本文关键字:套接字 缓冲区 asio- boost      更新时间:2023-10-16

我使用boost::asio::read(或者可能是等效的async_read)从套接字读取一些数据。

是否可以将读取的字节留在底层套接字中,以便下次在套接字上调用read时再次接收该数据?

正如Simon所说,boost::asio::read()(或boost::asio::async_read())无法实现。但是,对于read(),您可以在套接字上调用native_handle()来获取套接字描述符,然后使用带有MSG_PEEK标志的::recvmsg()。类似地,您可以使用null_buffers()作为接收缓冲区来调用async_read(),然后使用native_handle()/::recvmsg()技巧来查看数据。查看boost文档的这一部分,了解如何使用null_buffer()。

不,这是不可能的-如果你想要一种偷看,你必须自己存储偷看的字节。