我正在将 async_read 与 streambuf 一起使用。但是,我想将读取的数据量限制为 4,这样我就可以在进入正文之前正确处理标题。
如何使用 async_read 做到这一点?
我正在将 async_read 与 streambuf 一起使用。但是,我想将读取的数据量限制为 4,这样我就可以在进入正文之前正确处理标题。
如何使用 async_read 做到这一点?
您可以使用transfer_at_least作为async_read 上的 CompletionCondition来保证标头可用。
一旦处理了初始标头,就可以处理任何多余的正文数据(或进一步的标头)。
boost::asio::transfer_exactly(streambuf.size())
是你所需要的。试着像这样使用:
boost::asio::async_read(socket_,
buf,boost::asio::transfer_exactly(size_),
boost::bind(callback,
boost::asio::placeholders::error));