1
我試圖從一個async_receive調用接收許多udp消息。我的信息是約。長度爲60個字節。boost :: asio udp - 如何獲得很多可變緩衝區?
我給一個async_receive
調用一個緩衝陣列非常相似的提升文檔,但似乎無法得到全部填滿緩衝區。
char d1[128];
char d2[128];
char d3[128];
boost::array<boost::asio::mutable_buffer, 3> bufs =
{
boost::asio::buffer(d1),
boost::asio::buffer(d2),
boost::asio::buffer(d3)
};
_socket.async_receive(bufs, handler);
當我的處理程序被調用時,bytes_transferred
等於一個消息長度(即60)。
我如何能獲得第二和第三緩衝任何想法填充?另外,如果第二個和第三個可變緩衝區被填充,我現在該如何?
發佈了一些我們可以編譯的代碼,你的僞代碼並不足夠準確地描述問題。 – 2010-07-26 19:45:13
如果您需要填充多個緩衝區,則必須對async_receive()進行多次調用。每次調用async_receive()都會收到一個UDP數據報(並且不行,您不應該在連續兩次調用async_receive())。另一個故事是,例如將消息的頭部和正文接收到兩個緩衝區中。 – 2011-03-14 15:51:14