其实用 C/C++ 写 CGI 程序非常简单,主要是要清楚什么是 CGI。
CGI全称 Common Gateway Interface (共同编程接口),是一种编程接口,不论什么语言,只要按照该接口的标准编写出
来的程序,即可叫做 CGI 程序。CGI 程序的输入/输出是使用编程语言的标准输入/标准输出,所以用 C/C++ 来写 CGI 程序就好象写普通
程序一样,不过还有几样东西要注意的。
1、CGI 程序的通信方式
当有数据从浏览器传到 Web 服务器后,该服务器会根据传送的类型(基本有二类:GET/POST),将这些接收到的数据传
入 QUERY_STRING 或 变量中,CGI 程序可以通过标准输入,在程序中接收这些数据。当要向浏览器发送信息时,只要向 Web 服务器发送
特定的文件头信息,即可通过标准输出将信息发往 Web 服务器,Web 服务器处理完这些由 CGI 程序发来的信息后就会将这些信息发送给浏览器。这
样就是 CGI 程序的通信方式了。
2、接收数据
用 GET 方式接收到的数据保存在 Web 服务器的 QUERY_STRING 变量里,而通过 POST 方式接收到的数据是保存在 这
个 Web 服务器变量里。它们的唯一区别就是:以 GET 方式接收的数据是有长度限制,而用 POST 方式接收的数据是没有长度限制的。并且,
以 GET 方式发送数据,可以通过 URL 的形式来发送,但 POST方式发送的数据必须要通过 Form 才到发送。
好,现在让我们用 C 语言写一个神圣的 CGI 程序 -- Hello,World!
vi hello.c # 编辑源文件
// Begin
#include <stdio.h>
main() {
printf("Content-type:text/html\n\n");
printf("Hello,World!");
}
// End
gcc -o hello hello.c # 编译
将该程序放在 Web 服务器的 cgi-bin 目录下,然后通过以下方式访问:
http://www.server.com/cgi-bin/examples/c/hello
这将在浏览器里打印出 Hello,World!
这就算得上是一个 CGI 程序了,是不是很简单?^_^ 第一句 printf() 是打印头信息,让 Web 浏览器知道以下打印的数据是什
么类型的数据,本例子中指定了 text/html 类型,即 html 文档,所以下面的那句 printf() 打印的内容就会像我们写网页内容一样
在浏览器上显示出来。
用 C/C++ 写 CGI 的最难之处应算从浏览器接收数据!不过,借助现成的源程序,从浏览器接收数据也只不过是小菜一碟而已。
我说的这个现成的源程序是用 FireBird 的 bbs2www 程序包里提取出来的。在这里下载:cgi.c
- cgi.h
经本人提取出来的源程序只有两个文件 cgi.c 和 cgi.h。当要用它们来写 CGI 程序时,只需在程序中加
入 #include "cgi.c" 即可,现以例子说明一下使用方法。假设要通过 GET 方式从浏览器接收用户的名字和 E-Mail 地址,源程
序如下:
vi test.c # 编辑源文件
// Begin
#include <stdio.h>
#include "cgi.c"
main() {
char *name,*email;
cgi_init();
cgi_html_head();
name = cgi_get("name");
email = cgi_get("email");
printf("name = %s",name);
printf("<br>");
printf("email = %s",email);
cgi_quit();
}
// End
首先定义两个指针,然后调用 cgi_init() 来初始化 CGI 环境, cgi_html_head() 打印 HTML 文件类型信
息,和 printf("Content-type:text/html\n\n"); 基本一样,不过用 cgi_html_head() 打印的头信
息会指定文件的字符编码为 gb2312 即中文字符。调用 cgi_get() 方法取得指定关键字( name 和 email )的值。当完
成 CGI 部分的代码后,要通用调用 cgi_quit() 和释放 CGI 所点的系统资源。最后就像以住一样去编译程
序,gcc -O6 -o test test.c 然后将该程序放到 cgi-bin 目录,接着通过以下方式调用该程序。
http://www.server.com/cgi-bin/examples/c/test?name=charles&email=charles@netease.com
好了,一切就是这样简单!要开发更好的 CGI 程序就要靠您的 C/C++ 的功力了。欢迎指教!
原文地址
http://www.moon-soft.com/program/bbs/readelite887957.htm
分享到:
相关推荐
C/C++实现CGI程序, 包含基本框架, 参数标准URI编解码, 数据解析, 回传数据等, 供学习之用
CGI全称Common Gateway Interface(共同编程接口),是一种编程接口,不论什么语言,只要按照该接口的标准...CGI 程序的输入/输出是使用编程语言的标准输入/标准输出,所以用C/C++来写 CGI 程序就好象写普通程序一样。
网络上实在是找不到用C/C++写fastcgi web应用的例子,我根据自己做过的一个项目做了些总结。里面有一个详细C语言写的的范例程序。C++的版本也是大同小异,大家注意留心fastcgi++包里面的C++示例源代码。 好像很少有...
window下可用的cgi程序 在window下,配合nginx和spawn-fcgi使用,内附源码和使用方法。
用纯C++语言写的CGI 处理http协议文件上传,程序中可以设置缓存区,不是把文件一下子全部的写入硬盘,而是从stdin中读取流,然后放置到缓存区,再由缓存区写入文件中,经测试可以上传好几G大小的文件。适用在arm或者...
cgi getway c/c++ source
大部分服务端程序采用例如PHP这样的脚本语言与服务器交互,由于工作需要,要求使用C程序与Apache服务器交互并与客户端浏览器交换信息,所以研究了一下C语言的CGI编程,这只是个简单的小例子,采用VS2008环境编写的...
cppweb易拓展,作者开发Java、Python等模块,用于支持Java、Python等语言开发cgi程序,开发者可以直接使用C/C++、Java、Python等语言进行混合开发。 cppweb追求小而巧,对于开源库是拿来即用,源码工程自带zlib、...
cgi开发的用户登录验证界面,绝对可用,window和arm嵌入式linux的cgi程序均可用,会话超时重新登录,方便集成到自己的应用程序中
《CGI开发使用手册》可供CGI编程人员参考,也为Internet网友编写自己的CGI程序提供了难得的帮手。 《CGI开发使用手册》目录: 第一部分 CGI基础 第1章 CGI简介 第2章 选择CGI工具 第二部分 CGI应用程序开发 第3章 ...
第24章 C和C++的技巧与技术 第25章 Java的技巧和技术 第26章 AppleScript的提示和技术 第27章 使用PHP/FI 第七部分 修饰CGI脚本 第28章 测试和调试CGI脚本 第29章 CGI中的错误处理 第30章 CGI安全问题 第八部分 ...
它支持ISO的C语言标准(C90/C99)和C++类库,附带了8000多个函数库并支持众多的工业标准,支持POSIX, socket/Winsock, X11/Motif, OpenGL, ODBC, C LAPACK, GTK+, Win32, XML, 和CGI等等。Ch具有MATLAB的高级数值计算...
1.1 Python基础 Python是用标准C语言写成的一种面向对象的脚本语言,语法相对简单,符合人的思 维习惯,通过集成环境或解释器直接执行源程序。它可以运行在windows、linux等操作 系统平台上,具有丰富的功能库以处理...
我现在编写一些很小的C/C++的程序,就用ChIDE,支持断点、调试,并且语法高亮等等。 注意:此IDE要到官网下载(支持35语言,自带中文),并且不是每个版本都有IDE环境,有的版本只有命令行。我下的是学生板(它的...
SOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户...
该项目的使命是提供易于使用,功能强大的C(C / C ++)嵌入式Web服务器,并具有可选的CGI,SSL和Lua支持。 CivetWeb拥有MIT许可证,因此您可以不受限制地进行创新。 开发人员可以将CivetWeb用作库,以将Web服务器...
cgi的编写有各种官方库,有C语言版本的cgic库,c++版本的cgicc库等等。 我们使用cgic库去编写cgi程序,简单易用
asp| C&VC&C++| cgi| delphi| JAVA| php| VB| vf| 编程工具| 编程资源| 编译环境| 补丁类| 单片机开发资料| 电子商务| 服务器相关| 汇编| 经营管理| 另类其它| 数据库类教程| 图片素材| 图像软件
是应用程序和Web服务器之间的接口标准.CGI程序允许用户通过网页把数据输入数据库,也允许数据从数据库流向用户.CGI通常和HTML表单一起使用.CGI程序一般可以用C,C++,VB等语言来写.
这种接口多种多样,数据库系统对CGI程序提供了各种数据库接口如Perl、C/C++、VB等。为了使用各种数据库系统,CGI程序支持ODBC方式,通过ODBC接口访问数据库。 2.1、ODBC技术介绍 ODBC(Open Database Connectivity,...