gpt4 book ai didi

sockets - Boost.Asio 的 async_read_some 会是整个消息吗?

转载 作者:行者123 更新时间:2023-12-03 12:09:22 24 4
gpt4 key购买 nike

我试图在我的 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 的内容。在其他地方缓冲并在那里建立整个接收到的消息。

关于sockets - Boost.Asio 的 async_read_some 会是整个消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44405106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com