我开始使用 Boost,所以可能是我搞砸了。
我正在尝试使用 boost (ASIO) 设置 http 服务器。我从文档中获取了代码:http: //www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/examples/cpp03_examples.html(HTTP Server,第一个)
与示例的唯一区别是我通过自己的方法“运行”运行服务器并在后台线程中启动 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());
}
}