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
字节,我需要更大的大小。
答案 0 :(得分:0)
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)代码中的注释引用了限制/限制 streambuf
的最大大小 - 所以它肯定无法帮助您获得“更大的尺寸”,相反