Domanda

Non c'è client esempio HTTP all'indirizzo http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/http/client/async_client.cpp Ti prego, aiutami a variazione massima dimensione del buffer , come spiegato nel seguente codice (è da esempi scaricato con biblioteca, non dal sito):

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";
  }
}

Ed ecco il costruttore del buffer di risposta:

boost::asio::streambuf response_;

Ma compilatore dice che seguente codice è valido:

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

Sembra che buffer di default è 512 byte dimensioni, ho bisogno di più grande formato.

È stato utile?

Soluzione

1) Non sono sicuro di dove il vostro 512 byte limite viene da poiché il costruttore per la asio::basic_streambuf ha la seguente firma (che permette di memorizzare molto più di 512 o 1024 byte):

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

2) Questo codice boost::asio::streambuf response_(1024); non è valido in quanto non si può variabili membro di inizializzazione al punto di dichiarazione, è necessario farlo in lista di inizializzazione del costruttore o del corpo. Se non sarà di default inizializzato.

3) Il commento nel codice referrer al limitando / limitazione la dimensione massima del streambuf -. In modo che sicuramente non aiuterà a ottenere "una dimensione più grande", al contrario

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top