2
有boost::asio::buffer
僅創建一個元素的緩衝區序列。是否有任何包裝允許從多個緩衝區創建緩衝區序列?如何創建緩衝區序列
有boost::asio::buffer
僅創建一個元素的緩衝區序列。是否有任何包裝允許從多個緩衝區創建緩衝區序列?如何創建緩衝區序列
沒有包裝,但可以提供滿足MutableBufferSequence和ConstBufferSequence概念要求任何容器多個緩衝區,如std::vector
,std::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_
需要保持有效直到處理程序被調用。
謝謝,這很有幫助。 asio文檔有點稀疏。 –