【问题标题】:C++ library to send back simple string for HTTPS queriesC++ 库为 HTTPS 查询发回简单字符串
【发布时间】:2014-06-01 03:04:53
【问题描述】:

我有一个用 C++ 编写的模拟器程序,在 Ubuntu 12.04 上运行。运行程序需要一些设置和选项,它们由 main 的参数给出。我需要通过 HTTPS 从远程机器/移动设备查询这些选项(所以基本上想象我想返回 main 的参数)。我想知道是否有人可以帮助我。

为了方便起见,可能应该有一些库,例如 Poco。我不确定它是否适合我的情况,但这是 poco 中连接设置的任何示例。但是,不是必须使用任何库;只是最有效/最简单的方法。

【问题讨论】:

  • 我真的不确定你想要什么。您是否正在寻找一种远程启动具有特定参数的服务的方法?或者您是否正在为已经运行的服务寻找遥控器?无论如何,您的代码 sn-p 似乎与您的问题不太吻合,我不确定您要如何处理它。
  • @Avery 哦,此时我只想查询,没有控制,程序运行后。所以客户端设备想要查询我的程序中的一些变量。而这个社区应该是通过 HTTPS。忘记上面的代码;我不知道该怎么做。

标签: c++ sockets poco-libraries


【解决方案1】:

Mongoose(或非 GPL 分支 Civetweeb)是嵌入式 Web 服务器。非常容易设置和添加控制器(通常是六行代码)

只需将项目文件(1 c 文件)添加到您的项目并构建,添加一行以启动服务器侦听并为其提供您喜欢的选项,并添加一个回调函数来处理请求。它确实是开箱即用的 ssl(尽管 IIRC 你也需要安装 openssl)

还有另一个SO answer 进行了一些比较。我在工作中使用了 civetweb,并且对这一切的简单性印象深刻。虽然没有太多的文档。

【讨论】:

  • 嗯,很有趣。另一位用户建议的一件事是,如果我只想通过 https 返回一些简单的字符串,则无需使用 https 服务器设置,这会使其过于复杂。我对它很陌生;你能分享一个例子吗?假设你有一个主程序,监听连接,并返回主程序的参数。
  • civetweb 自带一对example programs.
【解决方案2】:

这是一个精简的 POCO 版本,完整代码见HTTPSTimeServer example

struct MyRequestHandler: public HTTPRequestHandler
{
  void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response)
  {     
    response.setContentType("text/html");

    // ... do your work here

    std::ostream& ostr = response.send();
    ostr << "<html><head><title>HTTPServer example</title>"
         << "<body>Success!</body></html>";
  }
};

struct MyRequestHandlerFactory: public HTTPRequestHandlerFactory
{
  HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request)
  {
    return new MyRequestHandler;
  }
};

// ...

// set-up a server socket
SecureServerSocket svs(port);
// set-up a HTTPServer instance (you may want to new the factory and params
// prior to constructing object to prevent the possibility of a leak in case
// of exception)
HTTPServer srv(new MyRequestHandlerFactory, svs, new HTTPServerParams);
// start the HTTPServer
srv.start();

【讨论】:

  • 你确定就这么简单?!端口在哪里定义?顺便说一句,它只是 HTTP 吗?好的,假设我想返回 main 的参数。
  • 是的,我确定; POCO 就是为了让事情变得简单,让 C++ 程序员的生活更轻松。如上所述,这是 HTTPTimeServer 示例的精简版本。内置 POCO HTTP(S) 服务器的唯一缺点是它是基于线程的,因此无法优雅地扩展到数千个并发连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
相关资源
最近更新 更多