asio 的缓冲区有三种类型:

  • buffer:普通缓冲区。大小固定

  • stream_buffer:流缓冲区

  • buffer_sequence:由多个 buffer 提供的缓冲区

其中,每种缓冲区都有 const 和 mutable 两种类型。

buffer

创建一个普通 buffer 最简单的方式时使用 asio::buffer 函数,此函数将一块内存区域转换为一个 buffer。

当内存区域大小可变时,可用使用 asio::dynamic_bufferstd::vector 转换为一个动态 buffer。

stream_buffer

stream_buffer 派生自 std::basic_stream_buf 。此缓冲区经常用在 TCP 连接或者异步文件中。此缓冲区经常碰到的一个问题是如何转为 string:

asio::streambuf buf;
asio::streambuf::const_buffers_type cbt = buf.data();
std::string data{asio::buffers_begin(cbt), asio::buffers_end(cbt)};

buffer sequence

buffer sequence 是由多个 buffer 组成的 buffer 序列。主要用于 scatter read 和 gather read 中。

Last moify: 2022-12-04 15:11:33
Build time:2025-08-18 18:43:08
Powered By asphinx