如何在Web服务器中使用c ++应用程序?

ANU*_*NGH 12 c++ com web-services

我在Windows中使用C++控制台应用程序.我想在我的网站中使用这个应用程序,以便从客户端获取输入,然后调用此应用程序来处理它,输出将转发到Web服务器.我听说过COM DLL,但不知道如何为我的应用程序创建它.

小智 17

您应该尝试创建一个cgi脚本,根据应用程序的需要,您应该使用FastCGI(每次调用时都不会创建整个流程上下文).

  • CGI

您应该安装Apache服务器并激活cgi模块(通常默认激活它).然后你可以开发一个c ++程序,将可执行文件放在配置的CGI文件夹中,给出正确的权限.这个CGI脚本应该进行某种进程间通信(可以通过套接字或共享内存,第一个更容易).我希望你知道CGI脚本在C/C++ + Apache中是如何工作的,但它非常简单,总之你在stdin中接收环境并把你的答案放到stdout.

  • FastCGI的

你可以使用apache,安装fastcgi模块并在你的程序中创建一个线程(它也可能在你的主循环中,但我不建议)并将apache服务器FastCGI模块连接到你的守护进程.

最后但同样重要的是,您应该将守护程序作为服务运行.

PS:有一些框架选项(比如cppcms和wt),但是因为你已经编写了守护进程,我认为改变所有内容会很麻烦(当然,它取决于很多东西,比如复杂性和你的申请的大小).


Mar*_*anu 6

使用CGI:http://cgi.sourceforge.net/

如何从客户端获取输入?

getenv("QUERY_STRING")  
Run Code Online (Sandbox Code Playgroud)

如何将输出转发到Web服务器?

cout << "<html>\n";
Run Code Online (Sandbox Code Playgroud)

你好世界CGI:

#include <iostream>
#include <cstdlib>

using namespace std;

int main ()
{

   cout << "Content-type:text/html\r\n\r\n";
   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>Hello World - First CGI Program</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";
   cout << "<h2>Hello World! This is my first CGI program</h2>\n";
   cout << "<p>REQUEST_METHOD = " << getenv("REQUEST_METHOD") << "</p>\n";
   cout << "<p>QUERY_STRING = " << getenv("QUERY_STRING") << "</p>\n";
   cout << "</body>\n";
   cout << "</html>\n";

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然代码建议可能构成对问题的答案,但仅仅代码并没有提供关于它为什么以及如何解决原始问题的解释。因此,请添加一些解释,以更深入地了解解决原始问题所需的内容。 (2认同)