簡體   English   中英

boost :: asio udp-如何填充許多可變緩沖區?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM