树莓派与 c++ 运行线程,在网络上发布数据

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

本文关键字:布数据 数据 网络 c++ 运行 线程      更新时间:2023-10-16

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

我描述了这些要求,因为我疯狂地解决这个问题:我找到了很多关于 cgi 的样本,它或多或少很清楚它是如何工作的,对于我的范围来说还不够,因为它是从网页调用的过程,但它与我的应用程序无关。我的主要不能通过cgi程序,它应该运行,即使网页从未打开(应该是可选的)。

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

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

最后,对我来说需要的是拦截"获取"和"发布"信息,或者从Web服务器(服务器代码脚本)调用我的函数。 但是如何呢?

谢谢安德里亚

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

您可以使用MySQL连接器之类的东西从C++代码写入数据库,并且可以在Apache服务器上用PHP非常快速地编写显示数据库数据的基本网站。

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

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

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

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

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

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

我在评论中建议"您可以使用共享内存"。我不是建议你这样做。它很难使用,您需要绝对确保您的数据是原子更新的,否则您会遇到"部分数据属于一个更新,另一个属于旧更新"的问题,因此非常混乱。您不想花费数天或数周的时间尝试使共享内存同步正常工作。如果你真的需要在Web服务器和你的应用程序之间进行通信,我会使用一些形式二(命名?)管道并向应用程序发送请求,并发回响应。