boost.asio - massimo impostato leggere dimensioni torrente
-
28-09-2019 - |
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.
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