【问题标题】:Giving a C++ project a web front-end为 C++ 项目提供 Web 前端
【发布时间】:2012-01-22 05:32:03
【问题描述】:
我有一个当前具有控制台输出的 C++ 应用程序。
我想为这个应用程序添加一个简单的 Web 前端,以允许我远程查看其输出。
最后,我想添加一些按钮来控制后端应用程序,以及一些图表功能可视化数据。
我简要地研究了 Wt,但它似乎将太多的前端放在后端。
我希望能够使用更流行的 Web 前端,例如 JQuery和 MooTools。
目前我正在使用我的 Windows 桌面进行原型设计,但我希望该解决方案最终能够在 Linux 上运行,并使用 Apache 作为 Web 服务器。
在前端和后端之间创建绑定的最佳方法是什么?
【问题讨论】:
标签:
web-services
web-applications
【解决方案1】:
我有时使用的一种快速而简单的方法是编写一个 perl cgi 包装器来运行应用程序并捕获它的输出:
#!/usr/bin/perl
use warnings;
use strict;
use CGI qw(:standard);
print header();
print "<html><head><title>Example that should get you going</title></head><body>\n\n";
my @output = `/usr/bin/whatever`;
# you'd probably want to parse the output in some way at this point
print @output;
print '</body></html>';
当您开始控制它时,您可以向网站添加一个表单。基本上,如果 param() 中有数据,则使用该数据解析 C++ 应用程序的一组开关。如果没有定义开关,则显示一个带有一组复选框和按钮的表单,提交时将解析为开关并使用它们启动应用程序。
警告:如果您将表单输入解析为开关,请绝对 100% 确保它的解析方式不会被污染,例如,a:
; rm -rf *
...在表单返回的参数中。
【解决方案2】:
这可能不是您正在寻找的内容,但根据服务器设置,您通常可以重命名 C++ 应用程序,使其在 Apache 服务器上具有扩展名“.cgi”,它会像任何其他 cgi 脚本一样运行.但是,为了使内容正确显示,您需要在程序的开头添加以下行:
printf("Content-type: text/html\n\n");
printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
之后,只需打印网页的常规 html,您就有了一个直接的界面。您还可以使用它来使用 ajax 提供页面的一部分。