【问题标题】:Most common way to exchange data between C++ application and webserver interface [closed]在 C++ 应用程序和 Web 服务器接口之间交换数据的最常用方法 [关闭]
【发布时间】:2014-07-10 00:17:30
【问题描述】:

考虑以下场景:

基于 linux 的系统运行 C++ 应用程序。该系统需要用户名和密码,并且只能通过网络浏览器访问:

在网络服务器和 C++ 应用程序之间交换数据的最佳方式是什么?虚构的例子:

  • 网络服务器应以列表的形式向用户显示当前正在使用 C++ 程序的设备数量
  • 相反,用户可能会更改 C++ 程序的特定设置,例如更改应用程序相关的端口号

实现这种配置数据交换的最常用方法是什么?使用 *.xml 文件作为某种接口?

【问题讨论】:

  • 我认为最简单的方法是在 C++ 应用程序中嵌入一个 Web 服务器 =)
  • 对此我不确定。我尝试避免编写包含在应用程序中的自己的 Web 服务器。也许有类似于这个 servlet/java 的东西?
  • 定义最佳。无论如何,您可以使用任何您喜欢的 IPC。为了提高效率,您甚至可以将您的主程序/连接器编码为网络服务器的一个模块。
  • 解释一下你的 C++ 应用程序是什么?它是一个长时间运行的进程,还是一个服务器?相反,它是否可以相当快地计算东西(在几分之一秒内)?您希望同时拥有大量网络用户(例如,数千个浏览器同时连接到您的动态网站)还是只有少数几个?
  • 这是一个长期运行的过程,计算速度相当快。远程访问仅用于设置参数(维护)。我不明白为什么我的问题被几个用户否决了。是的,这是一个普遍的问题,因为我正在寻找一种通用的设计方法(要搜索的关键词等)。感谢harmic和basile提供一些想法/方法

标签: c++ linux interface


【解决方案1】:

假设你有一个守护进程,你想向它提供一个网络接口,并且你不想直接在其中嵌入一个网络服务器,或者将它嵌入到一个网络服务器中,那么你需要一个 IPC 机制。

Linux 为此提供了大量的原语,其中最常用于这种情况的是套接字。 C++ 程序将侦听套接字,等待来自网络服务器的连接。网络服务器会连接到套接字,发送请求,然后程序会做出响应。

Here 是一个很好的教程,它是为 C 编写的,但也适用于 C++。

通常不是直接使用原语,而是使用框架。快速谷歌搜索显示zeroMQ 看起来很合适。但是有很多选择。

【讨论】:

    【解决方案2】:

    我同意evilruff 的评论:最简单的方法可能是在您的应用程序中嵌入一个Web 服务器。这其实很简单。为此,您可以使用 Wtlibonion

    如果您坚持使用单独的 Apache 网络服务器,请考虑使用旧的 CGI 方式,或者更好的是 Fastcgi 方式。

    您也可以考虑让您的 C++ 应用程序将一些数据放入数据库(例如 PostgresQL)并让另一个 Web 应用程序查询该数据库。我不确定这是否是解决您问题的好方法。

    一般来说,您似乎想要一些message passing 或一些remote procedure call。有很多选择:MPIONC/RPCJSON-RPC 等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多