簡體   English   中英

Boost.Asio的async_read_some消息是否完整?

[英]Will Boost.Asio's async_read_some the whole message?

我試圖在我的C ++程序中通過http接收一個軟件包。 我正在為此使用Boost.Asio。

在我的handleAccept方法中,我有以下代碼來讀取程序包:

    // m_buffer is declared as: std::array<char, 8192> m_buffer;
    auto buf = boost::asio::buffer(m_buffer);
    newConnection->getSocket().async_read_some(
        buf,
        boost::bind(&TcpServer::handleRead, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)
    );

這足以獲得任何包裹嗎? 如何確保它將獲得大於8192字節的軟件包?

async_read_some讀取接收到的消息, 直到達到您提供給它的緩沖區的大小。 在回調函數的bytes_transferred占位符中返回接收到的消息中的字節數,請參閱basic_stream_socket :: async_read_some

如果知道您希望接收的最大消息大小,則可以使用足夠大的緩沖區來容納該消息。 否則,您將不得不將async_read_some緩沖區的內容復制到其他位置,並在此構建整個接收到的消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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