获取用于与C++应用程序通信的网页

Getting a webpage to communicate with a C++ application

本文关键字:通信 网页 应用程序 C++ 用于 获取      更新时间:2023-10-16

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

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

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

任何关于我如何实现这一目标的建议都将受到欢迎。

谢谢。

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

如果你的应用程序中只有非常简单的消息,那么你的数据库想法也会起作用,但你的应用软件必须不断检查是否有新的消息可用(这意味着会有很多不必要的流量,至少如果你的数据库和应用程序不在同一台机器上),你必须自己处理这些检查,等

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

您可以从万维网联盟中找到很多文档和示例,它们巧妙地解释了SOAP是如何定义的以及它是如何工作的。在gSOAP的《用户指南》中,还有关于如何用C++设置SOAP服务器的各种示例。

如果你正在编写C++程序,你只需要编写它来使用CGI,这样你的web服务器就会将你的C++程序作为一个"脚本"来运行,以处理相关的http请求,并且你会直接从你的C++程序输出http响应。

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

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

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

你正在做的叫做推。这是一个视频从谷歌IO.

只要把你的c++应用程序想象成Android设备。

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

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