![](/img/trans.png)
[英]How can I “prepare ” char arrays to boost::asio::streambuf::mutable_buffers_type buffers?
[英]boost::asio udp - How do I get many mutable buffers filled?
我正在嘗試從一個async_receive呼叫接收許多udp消息。 我的留言是大約。 60個字節長。
我給async_receive
調用了一個與boost文檔非常相似的緩沖區數組,但似乎無法將所有緩沖區都填滿。
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)。
關於如何獲取第二個和第三個緩沖區的任何想法? 另外,如果第二和第三可變緩沖區已被填充,我現在該怎么辦?
如果要在一個調用中接收多個數據報,通常(無論Boost如何)都需要使用recvmmsg 。 據我所知,Boost不使用recvmmsg,因此您需要自己將其與Boost ASIO擁有的本機套接字一起使用。 這樣做的好處是,當多個數據報可用時,您可以減少系統調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.