我正在使用此代码阅读
socket_.async_read_some(boost::asio::buffer(data_, max_length),
boost::bind(&session::handle_read, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
这就是写作
boost::asio::async_write(socket_,
boost::asio::buffer(data_, bytes_transferred),
boost::bind(&session::handle_write, this,
boost::asio::placeholders::error));
其中socket_是socket,max_length是枚举,值为1024,data_是char数组,长度为max_length。
但我想用 streambuf 替换 char 数组缓冲区。我试过了
boost::asio::streambuf streamBuffer;
socket_.async_read_some(boost::asio::buffer(streamBuffer),
boost::bind(&session::handle_read, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
但不起作用。我该怎么做?
最佳答案
您需要获得 mutable_buffers_type
从 streambuf
中用作 async_read_some
的第一个参数。
boost::asio::streambuf streamBuffer;
boost::asio::streambuf::mutable_buffers_type mutableBuffer =
streamBuffer.prepare(max_length);
socket_.async_read_some(boost::asio::buffer(mutableBuffer),
boost::bind(&session::handle_read, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
关于c++ - 使用streambuf作为缓冲区来 boost asio读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10764986/