gpt4 book ai didi

c++ - boost.asio - 设置最大读取流大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:58 26 4
gpt4 key购买 nike

http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/http/client/async_client.cpp 有一个 HTTP 客户端示例请帮助我更改最大缓冲区大小,如以下代码中所述(它来自与库一起下载的示例,而不是来自站点):

void handle_write_request(const boost::system::error_code& err)
{
if (!err)
{
// Read the response status line. The response_ streambuf will
// automatically grow to accommodate the entire line. The growth may be
// limited by <b>passing a maximum size to the streambuf constructor</b>.
boost::asio::async_read_until(socket_, response_, "\r\n",
boost::bind(&client::handle_read_status_line, this,
boost::asio::placeholders::error));
}
else
{
std::cout << "Error: " << err.message() << "\n";
}
}

下面是响应缓冲区的构造函数:

boost::asio::streambuf response_;

但是编译器说下面的代码是无效的:

boost::asio::streambuf response_(1024);

默认缓冲区似乎是 512 字节大小,我需要更大的大小。

最佳答案

1) 我不确定你的 512 字节限制是从哪里来的,因为 asio::basic_streambuf 的构造函数具有以下签名(这允许它存储超过 512 或 1024 的方式字节):

explicit basic_streambuf(
std::size_t max_size = (std::numeric_limits<std::size_t>::max)(),
const Allocator& allocator = Allocator())

2) 此代码 boost::asio::streambuf response_(1024); 是无效的,因为您不能在声明点初始化成员变量,您必须在构造函数的初始化列表或其主体中进行.如果您不这样做,它将被默认初始化。

3) 代码中的注释引用了 limiting/restricting streambuf 的最大大小 - 因此它绝对不会帮助您获得“更大的大小”,恰恰相反。

关于c++ - boost.asio - 设置最大读取流大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4094028/

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