【问题标题】:A non-blocking Poco HTTP server?非阻塞 Poco HTTP 服务器?
【发布时间】:2020-03-24 13:37:00
【问题描述】:

在 Poco 的文档 (https://pocoproject.org/docs/Poco.Util.ServerApplication.html) 中有:

int main(int argc, char** argv)
{
    MyServerApplication app;
    return app.run(argc, argv);
}

这意味着一个独立的、阻塞的服务器应用程序。但是,我的用例是我想将 HTTP 服务器集成到我已经存在的 C++ 应用程序中,并且它不应该阻塞应用程序的其余部分。我可以在自己的线程中以某种方式启动 Poco 服务器吗?

【问题讨论】:

  • 你尝试的时候发生了什么?
  • 当服务器等待请求时,您的应用程序应该做什么?
  • 这只是嵌入式应用程序的配置 UI。该应用程序同时执行它所做的事情。看来我应该直接使用HTTPServer。

标签: c++ c++11 network-programming httpserver poco-libraries


【解决方案1】:

ServerApplication 应该是它自己的 Application,因为它继承自 Application。这意味着它有自己的主。

所以这取决于你想在ServerApplication 中做什么。

如果您希望其他内容成为主要功能,请不要使用ServerApplication。但是,如果您想要选项解析和可移植代码的好处,请使用 ServerApplication 并让它通过类似于 SampleServer 的线程生成您的其他代码。

我希望这会有所帮助。

编辑

HttpTimeServerApp

它有一个包含HTTPServer 的示例应用程序。也许您只想在现有应用中启动 HTTPServer

【讨论】:

  • 是的,确实如此。谢谢!