Raspberry Pi 使用 c++ 运行 线程,在网络上发布数据

Raspberry Pi with c++ running thread, publish data on web

我想在网页上显示在我的 C++ 程序中处理的一些值,这应该可以从许多客户端打开,并且网页对于我的应用程序应该不是强制性的。

我描述了这些要求,因为我疯狂地想解决这个问题: 我发现了很多关于 cgi 的示例,或多或少,它是如何工作的,但对于我的范围来说还不够,因为它是一个从网页调用的过程,但它与我的应用程序没有任何关系。我的主要不能通过cgi程序,它应该运行即使网页永远不会打开(应该是可选的)。

那么,如何在 cgi 程序和我的主 c++ 程序之间共享数据?

保存在文件或数据库上真的是唯一的方法吗?

最后,我需要的是拦截 "get" 和 "post" 信息,或者从 Web 服务器(服务器代码脚本)调用我的函数。但是如何?

谢谢 安德里亚

如果它是单向系统(例如,数据仅从 C++ 程序流向网站上的用户,而不是从网站流向 C++ 程序),那么最简单的方法是写入文件或最好一个数据库。

您可以使用 the MySQL connector 之类的东西从您的 C++ 代码写入数据库,并且可以在 Apache 服务器上的 PHP 中非常快速地编写一个显示来自数据库的数据的基本网站.

另一种解决方案可能是在创建新数据时直接从 C++ 程序将输出写入 HTML 文件。请求数据的用户可以访问您的服务器并从 HTML 文件中获取最新数据。

我这样做的方法是有一个小程序来测量事物并将数据输出到文件,使用 mvrename 确保文件被自动替换。

然后使用具有编程功能的网络服务器(我知道 PHP,但您可以使用 Java、Java 脚本、Python、C、C++、或者可能有十几种其他语言)。

保持简单 - 除非你绝对有一个标准来让它与众不同,在完成事情时简单总是比复杂好 - 一旦它起作用,你可以 fiddle 使用它,或者完全重建它并使其变得更好,但至少你有一些先行之有效的东西。

事物请求可以存储在您的应用程序读取的配置文件中 - 作为 POST 或 URL 参数发送(如果您想使用 "function 3",那么您使用:http://example.com/mypage.php?function=3,等等)。

这不是唯一的方法,还有很多解决方案。但这是简单的方法,它将在本周末左右解决问题并可靠地工作,而不是花费数周时间来解决问题并且无法可靠地工作的解决方案 "ever".

我在评论中建议"you can use shared memory"。我不建议你那样做。它很难使用,你需要绝对确定你的数据是自动更新的,否则你会遇到 "part of the data belongs to one update, the other to an older update" 的问题,因此非常混乱。您不想花费几天或几周的时间来尝试让共享内存同步工作。如果你真的需要在网络服务器和你的应用程序之间进行通信,我会使用某种形式的两个(命名?)管道并将请求发送到应用程序,然后发回响应。