3

在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字节大小的,我需要更大的大小。

4

1 回答 1

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- 因此它绝对不会帮助您获得“更大的尺寸”,相反。

于 2010-11-04T07:40:04.523 回答