2013-01-19 69 views

回答

13

没有包装,但可以提供满足MutableBufferSequenceConstBufferSequence概念要求任何容器多个缓冲区,如std::vectorstd::list,或boost::array。大多数功能都是按照BufferSequence概念来实现的,并且boost::asio::buffer提供了一种将单个缓冲区包装成符合要求的类型的方法。这documentation简要提到它。

下面是从Boost.Asio的系列化example一个片段:

// Write the serialized data to the socket. We use "gather-write" to send 
// both the header and the data in a single write operation. 
std::vector<boost::asio::const_buffer> buffers; 
buffers.push_back(boost::asio::buffer(outbound_header_)); 
buffers.push_back(boost::asio::buffer(outbound_data_)); 
boost::asio::async_write(socket_, buffers, handler); 

注意,buffers收集不需要保持在范围内,因为这可能Boost.Asio的创造必要的复制documentation状态。但是,底层内存outbound_header_outbound_data_需要保持有效直到处理程序被调用。

+0

谢谢,这很有帮助。 asio文档有点稀疏。 –

相关问题