Я начинаю использовать Boost, так что, возможно, я что-то испортил.Boost HTTP server issue
Я пытаюсь настроить http-сервер с boost (ASIO). Я взял код из документов: http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/examples/cpp03_examples.html (HTTP-сервер, первый)
Единственное отличие от примера: я запускаю сервер своим методом «запускать» и запускать io_service в фоновом потоке, например, в Документы: http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/io_service.html
boost::asio::io_service::work work(io_service_);
(. Кроме того, я останавливая io_service от моего метода запуска тоже)
Когда я начинаю это модифицированный сервер кажется, что все будет в порядке, запустите метод работает отлично. Но затем я пытаюсь получить документ с сервера, зависающий от запроса, и поток управления никогда не приходит к методу request_handle. Я что-то упустил?
UPD. Вот мой код запуска:
void NetstreamServer::run()
{
LOG4CPLUS_DEBUG(logger, "NetstreamServer is running");
boost::asio::io_service::work work(io_service_);
try
{
while (true)
{
if (condition)
{
io_service_.stop();
break;
}
}
}
catch (std::exception const& e)
{
LOG4CPLUS_ERROR(logger, "NetstreamServer" << " caught exception: " << e.what());
}
}
Где находится 'io_service_.run()'? –
Может быть, я не понимаю документ (http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/io_service.html), но AFAIU, так как я создаю объект «work» Мне это не нужно. – Val
Рабочий объект гарантирует, что 'io_service :: run' не будет завершен (цитирование из вашей ссылки: *" Это гарантирует, что функция run() объекта io_service не будет завершена, пока выполняется работа, и что она завершается, когда есть незавершенной работы не осталось. *). Но если вы не называете 'io_service :: run', никто не сделает это за вас. –