2013-01-19 106 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文檔有點稀疏。 –

相關問題