【问题标题】:Getting a webpage to communicate with a C++ application让网页与 C++ 应用程序通信
【发布时间】:2012-03-09 08:56:13
【问题描述】:

我想要实现的是让网页向 C++ 应用程序发送消息,但这需要从 C++ 到 Web 服务器以及从 Web 服务器到客户端的某种形式的连接。

我想到的一种方法是拥有一个存储消息的 MySQL 数据库,并且 C++ 应用程序使用 libCURL 通过 php 脚本向 Web 服务器询问任何新消息。它必须每秒钟左右轮询一次,这有点浪费。此外,每当您想从网页发送消息时,您都必须将表单提交回网络服务器,这会很慢。

我也在研究 HTML5 websockets,认为它可以在客户端和 C++ 应用程序之间创建 TCP 连接,但我不认为它们是这样工作的。 websocket 是设计成通过服务器在两个 HTML5 应用程序之间路由消息,还是理论上可以使用 HTML5 应用程序直接与服务器通信(可能运行 php 脚本,或发送普通 TCP 数据包)?

欢迎对我如何实现这一目标提出任何建议。

谢谢。

【问题讨论】:

    标签: php c++ html tcp websocket


    【解决方案1】:

    如果您想从您的网站进行远程过程调用,我建议您看看 SOAP。 SOAP 可以完美运行 with PHP,而使用 gSOAP,您可以轻松地将服务器接口嵌入到您的 C++ 应用程序中,如果需要,反之亦然。

    如果您的应用程序中只有非常简单的消息,您的数据库想法也可以,但您的应用程序必须不断检查是否有可用的新消息(这意味着大量不必要的流量,在至少如果您的数据库与您的应用程序不在同一台机器上),您将不得不自己处理这些检查,提出模型等。

    另一方面,SOAP 将您的数据直接发送到您的服务器应用程序,并隐式处理类型安全或序列化等所有令人讨厌的事情。

    您可以在World Wide Web Consortium 中找到大量文档和示例,清楚地解释 SOAP 是如何定义的以及它是如何工作的。在 gSOAP 的 User Guide 中还有各种示例,说明如何使用 C++ 设置 SOAP 服务器。

    【讨论】:

      【解决方案2】:

      如果您正在编写 C++ 程序,您可以编写它以利用 CGI,以便您的 Web 服务器将您的 C++ 程序作为“脚本”运行以处理相关的 http 请求,并且您将直接输出 http 响应来自你的 C++ 程序。

      http://en.wikipedia.org/wiki/Common_Gateway_Interface

      【讨论】:

        【解决方案3】:

        这并不容易。你应该看看谷歌的解决方案:

        调用云到设备消息传递框架,用于向 Android 设备发送消息。

        您所做的称为推送。 Here is a video on this from Google IO.

        只需将您的 c++ 应用程序视为 Android 设备。

        您的 C++ 应用程序将通过某个 tcp/ip 端口与您创建的服务建立连接,该服务只是等待连接。您的应用程序会告诉服务器运行该应用程序的用户的 ID,或者如果它是多播的,您的应用程序将等待服务给它一条消息。

        您的网络服务器可以使用进程间通信、命名管道、命名互斥体等来使您的服务单一,以向所有打开的 TCP/IP 连接发送消息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-30
          • 2011-10-25
          • 1970-01-01
          • 1970-01-01
          • 2011-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多