1

问题是,它是 C++。我创建它们的方式使得它们始终通过终端/控制台窗口运行并等待用户输入,或者简单地获取样本输入并使用它运行。输出也一直到终端屏幕或有时到文件。如果可能的话,我不太确定如何将所有这些内容与网站集成,同时保留源代码原样。我想我的目标是让我使用的任何网站都像一个终端窗口一样接受用户输入,然后将其发送出去以运行有问题的 C++ 程序并返回输出(无论它可能是什么) ,所有这些都对源代码进行了最少的修改。要么设置一个更自动化的页面,用户只需点击“开始”

当谈到网络时,我认为自己是 HTML、CSS、PHP 和 MySQL 的中级,并且是 Javascript 的初学者,所以如果可以使用这些语言来完成,那就太棒了。如果没有,请不要害怕向我展示新的东西。

4

6 回答 6

3

引入 Web 的最简单的交互模型是一个应用程序,该应用程序预先接受输入并在stdout. 在这种情况下,正如未知海报所提到的,您可以使用CGI。但是由于 CGI 的性质,这只有在从用户那里收集一页中的所有信息、发送到应用程序并在一页中返回结果时才有效(在最简单的意义上)。这是因为每次使用 CGI 调用页面都会产生一个新的独立进程来服务请求。(现在还有其他更高效的解决方案,比如FastCGI它保留了一个进程池。)如果您的应用程序是交互式的,因为它收集一些信息,呈现一些结果,打印一些选项,收集更多用户输入,然后产生更多结果,则需要对其进行调整。

以下是 C++ 中最简单的 CGI 程序:

#include <iostream>
int main(int argc, char* argv[])
{
    std::cout << "Content-type: text/plain\n" << std::endl;
    std::cout << "Hello, CGI World!" << std::endl;
}

它所做的只是返回内容类型,后跟一个空行,然后是带有通常无聊问候的实际内容。

要接受用户输入,您可以用 HTML 编写一个表单,POST目标是您的应用程序。它将被传递一个包含请求参数的字符串,采用通常的 HTTP 样式:

foo.cgi?QTY=123&N=41&DESC=Simple+Junk

然后,您需要解析查询字符串(通过QUERY_STRING环境变量传递给程序)以从表单中收集输入字段以传递给您的应用程序。请注意,解析参数字符串是大量安全漏洞的来源。为您进行解析的 C++(Google 搜索显示很多)的 CGI 库绝对值得。查询数据可以通过以下方式获得:

const char* data = getenv("QUERY_STRING");

因此,您至少需要更改您的应用程序以接受来自name=value成对查询字符串的输入。如果您不想,甚至不需要生成 HTML;text/plain只需返回开头的内容类型。然后您可以稍后使用 HTML 对其进行改进(并相应地更改内容类型)。

还有其他更复杂的解决方案,包括整个 Web 框架,例如Wt。但这将涉及对您的应用程序进行相当大的更改,您说您希望避免这种情况。

于 2009-09-25T23:32:14.450 回答
2

几乎跑题了,但你可能想看看Wt

于 2009-09-26T02:25:38.843 回答
1

你有没有考虑过使用 cgi ......它的 19 世纪技术让网络服务器执行用 C/C++ 编写的程序来运行和生成输出

我对此不太了解......但我将它用于一些学校项目

于 2009-09-25T22:56:32.133 回答
0

使用截屏视频展示一切。我使用 Camtasia Studio,但那里有很多:http ://en.wikipedia.org/wiki/Screencast

Camtasia 甚至会生成您需要上传到 Web 服务器的所有 HTML 和 Flash。买一个漂亮的 USB 麦克风,然后写一个你要说什么和展示什么的脚本。

于 2009-09-25T22:57:11.663 回答
0

炫耀你的项目的目的是什么?你想给你的朋友或雇主留下深刻印象吗?

通过 Web 界面模拟或移植 C++ 控制台应用程序似乎不可行。我想您可以在服务器端脚本和您的 C++ 二进制文件之间编写一座桥梁,将用户输入传递给您的应用程序,然后通过 Web 界面返回结果。请记住,这对您来说将是一项艰巨的任务。

Ruby 在他们的网站上有一个编译器,它演示了可以做到这一点。

然而,网络上没有人会期望在网络浏览器中运行您的 C++ 应用程序。此外,我认为任何对运行 C++ 应用程序感兴趣的人都会非常乐意下载您制作的 C++ 二进制文件并运行它(除了安全风险),但是当您考虑它时,我们会下载应用程序并一直运行它们,同时信任来源。

我创建了一个作品集网站,目的是让雇主看到我的作品。看一看,它会让你了解另一种做事的方式。

基本上,我提供二进制文件供下载、视频、屏幕截图和链接。如果用户没有时间(或合适的计算机)来运行我的项目,他们可以使用这些东西快速查看我的工作。

祝你好运

于 2009-09-26T02:38:33.997 回答
0

我没有这方面的经验(除了在 BART 上听到一个人谈论用 C 实现他的服务器端代码),但你可以考虑看看 SWIG(http://www.swig.org/)。它允许您包装 C++,以便在使用 PHP 等语言时可以访问 C++ 代码。

于 2009-09-26T02:46:31.463 回答