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

时间:2012-02-03 21:41:37

标签: c++ networking boost network-programming boost-asio

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

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

2 个答案:

答案 0 :(得分:3)

像西蒙所说,你不能用boost::asio::read()(或boost::asio::async_read())来做。但是,对于read(),您可以在套接字上调用native_handle()以获取套接字描述符,然后将::recvmsg()MSG_PEEK标志一起使用。同样,您可以使用async_read()作为接收缓冲区调用null_buffers(),然后使用native_handle() / ::recvmsg()技巧查看数据。查看boost文档的this section,了解如何使用null_buffers()。

答案 1 :(得分:1)

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