Как закрыть http соединение с cpp-netlib?

При запуске Cpp-netlib (версия 0.11-rc1) [редактировать (дополнение)] код скопирован от [/редактировать] Пример HttpClient не заканчивается

Я предполагаю, что это потому, что соединение остается открытым.
1. Правильно ли мое предположение?
2. Нужно ли закрывать соединение вручную?
3. Если да, как получить доступ к соединению?

2

Решение

Cpp-netlib http_client кажется, использовать asio::io_service тот продолжает работать.

Для завершения программы HttpClient используйте asio::io_service::stop().

Чтобы иметь возможность получить доступ к io_service тот http_client использует:

  1. создать io_service пример;
  2. поставь это http_client с помощью http_client_options; а также
  3. когда программа должна закончиться, позвоните stop() на io_service-пример.

Пример клиента cppnetlib становится:

#include <boost/network/protocol/http/client.hpp>
#include <boost/asio/io_service.hpp>
#include <boost/shared_ptr.hpp>

int main(int argc, char*[] argv)
{
using namespace boost::network;
using namespace boost::network::http;
using namespace boost::asio;     // LINE ADDED

client::request request_("http://127.0.0.1:8000/");
request_ << header("Connection", "close");

// ADDED / MODIFIED
boost::shared_ptr<io_service> io_service_ = boost::make_shared<io_service>();
client client_(client::options()
.io_service(io_service_));
// END ADDED

client::response response_ = client_.get(request_);
std::string body_ = body(response_);

io_service_->stop();             // LINE ADDED
}

(увидеть https://github.com/kaspervandenberg/https-tryout/blob/e8a918c5aa8efaaff3a37ac339bf68d132c6d2d6/httpClient.cxx для полного примера.)

6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector