我开始使用 Boost,所以可能是我搞砸了。
我正在尝试使用 boost (ASIO) 设置 http 服务器。我从文档中获取了代码:http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/examples/cpp03_examples.html (HTTP服务器,第一个)
与示例的唯一区别是我通过自己的方法“run”运行服务器并在后台线程中启动 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”方法。 我错过了什么吗?
更新。这是我的运行方法代码:
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()
- 否则没有人会分派(dispatch) io_service_
服务的 Asio
对象的完成处理程序。
关于c++ - boost HTTP 服务器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18792446/