提升 HTTP 服务器问题
Boost HTTP server issue
我开始使用Boost,所以可能是我搞砸了。
我正在尝试使用boost(ASIO)设置http服务器。我从文档中获取了代码: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"方法。我错过了什么吗?
上。这是我的运行方法代码:
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()
- 否则没有人会调度由io_service_
提供服务Asio
对象的完成处理程序。
如果不包括您更改的代码,这里的每个人都只能猜测。不幸的是,您也不包括您正在使用的编译器和操作系统。即使 boost 声称它是独立于平台的,您也应该始终包含此信息,因为实际上,即使使用 boost,平台也是不同的。
让我做一个猜测。你用Microsoft窗口?如何防止"主"功能退出?您将阻塞"运行"函数移出另一个线程,main 函数不再有等待点。让我再猜一猜,你使用了类似"getchar"的东西。有了它,您只需按键盘返回键即可退出服务器。如果是,问题出在getchar上,不幸的是,它阻止了asio套接字实现的每个io,但仅在基于Windows的系统上。
我不需要猜测您是否会包含帖子中提到的信息。特别是您对代码示例所做的所有 (!) 更改。
- Java 客户端C++服务器数据发送/接收问题
- 使用 Libssh 将文件从服务器复制到客户端:分配文件复制目标路径时出现问题
- 从 tcp 服务器打开 8MP H264 流时出现问题
- C++中从客户端到服务器的数据传输问题
- UDP 客户端到 UDP 服务器的问题,出现 10057 错误
- C++机器人程序(我的私人服务器)出现问题
- Caffe 安装问题,远程服务器,ld 找不到 -<package>
- 服务器未收到UDP数据包,花费数小时试图找出问题所在
- C 多线程TCP服务器问题
- 套接字 TCP 服务器程序问题
- Linux TCP服务器问题C++
- 连接到IRC服务器时出现问题
- 服务器/客户端TCP异步(winsock)//FD_WRITE问题
- 基本服务器/客户端代码出现问题
- 通过套接字发送的图像流-服务器死锁问题
- 使用C++CGI解决服务器错误500时遇到问题
- C++:服务器上的 boost::文件系统问题(区域设置::facet::_S_create_c_locale 名称无效
- omniORB C++服务器,Java 客户机在运行应用程序时出现问题
- 提升 HTTP 服务器问题
- 问题4.8.4如何检查http服务器上是否存在文件