2010-09-22 201 views

回答

5

使用兩個async_read操作,其中第一個讀取4個字節的標題,第二個讀取消息正文。您的第一個async_read的處理程序應該啓動消息正文的async_read

asio的例子在幾個地方使用這種技術,serialization的例子是一個例子。我也回答了類似的question,雖然它使用同步讀取,但概念是相同的。

+0

+1使用API​​的豐富程度比我更好的建議 – 2010-09-22 14:40:19

0
boost::asio::transfer_exactly(streambuf.size()) 

是你need.just嘗試使用這樣的:

boost::asio::async_read(socket_, 
         buf,boost::asio::transfer_exactly(size_), 
         boost::bind(callback, 
         boost::asio::placeholders::error));