说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Windows操作平台下CGI的实现 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
Windows操作平台下CGI的实现 -VB资料

华中理工大学图像识别与人工智能研究所 龚建勇

实现WWW服务器与客户的交互可以有多种途径,如CGI、ISAPI、JAVA、ASP等,CGI是一种大家都比较熟悉的一种实现上述功能的有效途径,本文将就如何在Windows平台下实现CGI功能作一介绍。  

一、CGI概述
1.CGI概念
CGI即通用网关接口(Common Gateway Interface),它是一个WWW服务器主机对外服务的标准接口。一般来说,一个CGI接口的功能就是在超文本文件和服务器主机应用程序间传递信息。
 
2.CGI程序语言
事实上,任何一种程序语言,只要能在服务器主机上利用CGI接口来编写应用程序,都可以叫作CGI程序语言。目前最为流行的CGI程序语言有四种:C、Shell、Perl和Visual Basic,其它一些语言也有许多人在用,如TCL、Frotran及AppleScript等。下文我们将介绍用C语言编写CGI的方法。
 
3.CGI程序的执行
CGI程序一般是个可执行程序。编译好的CGI程序一般要集中放在一个目录下。具体存放的位置随操作系统的不同而不同,例如UNIX系统下是放在cgi-bin子目录下,而在Windows操作下(注意,这里不包括NT4.0)以Webstar或Website作WWW服务器,CGI程序都放在cgi-win下。C GI程序的执行一般有两种调用方式:一种是通过URL直接调用,如:"http://gjy.sic.o.ml.or g/cgi-win/cgi.exe",在Netscape的URL栏里直接写入上述描述就可以调用该程序:另一种方式,也是主要的方式是通过交互式主页里的FORM栏调用,通常都是用户在填完一张表后按确认按钮启动CGI程序。
 
4.CGI工作的主要流程
CGI工作的主要流程是:1.通过HTML获取用户输入的信息;2.将用户输入的信息传给服务器主机应用程序(如数据库查询);3.将服务器处理结果通过HTML文件返回给用户。
二、Windows平台下CGI的工作原理
CGI主要的功能不外乎在服务器应用程序和客户之间传递信息。我们知道,通常CGI应用在服务器和客户端传递信息是通过输入输出流来实现的,如UNIX平台下的CGI,通过读取输入流Scanf来获取用户输入,读取输出流printf向用户输出结果。而Windows系统下CGI实现这一功能是通过文件系统来实现,即通过一个特定的输入文件来获取用户输入的信息,通过一个输出文件向用户传递结果。
这里这个输入文件是由WWW服务器生成的一个临时文件,里面包含了各种环境信息及用户输入信息,以key=value的形式给出,类似于Windows里的INI文件。下面以一个典型的该文件为例说明主要层的含义。
[CGI]
Request Protocol=HTTP/1.0
Repuest Method=POST
Executable Path=/cgi-win/cgitest.exe
Logical Path=/CGI
Physical Path=c:\httpd\htdocs\CGI
Server Software=Website /1.1(Shareware non-commercial License))
Server Name=gjy.sic.o.ml.org
Server Port=80
Server Admin=gjy@gjy.sic.o.ml.org
CGI Version=CGI/1.1 WIN
Remote Adress=2.02.114.2.182
[system〗
Debug Mode=No
Output File=D:\hs06f12d.out
*/*=Yes
image/gif=Yes
image/x-xbitmap=Yes
image/jpeg=Yes
[Extra Headers〗
User-Agent=Mozilla/3.0 (Windows;I;32bit)
[Fotra rm Literal〗
textl=hello world
radio1=2
[Form External〗
field300chars=D:\hs06f12d.000 300
fieldwith l inebreaks=D:\hs06f12d.001 43
[Frm Huge〗
fiel d230
K=d:s06f12d.002 276920
 
下面将主要各栏的意义解释如下:
1.CGI
这一栏包含大部分的CGI信息,如要求的协议Request Protocol,提取用户信息的方式Me thod,执行程序的路径Exectable,服务器软件(Server Software),服务器名(Server Name), 端口号(server Port)等。
2.Accept栏
这一栏包含客户端可以接受的文件类型。
3.System栏
这一栏包含一些Widnows CGI使用的特别项目如输出(Output File),Content File
4.Form Literal资料栏
如果用户端的要求是使用POST方式,用户输入的资料会被解码后以key=value的方式放在这一栏里,这里的key即输入栏的变量名,value是用户输入的信息。
5.Form External栏
如果解码后的字串长度超过254byte,或字串中含有控制字元,系统会把这些信息存在该栏指定的临时文件里并指出长度。
三、CGI应用的实现
1、开发平台
首先操作系统应为Windows操作系统。我们用的是Windows 95。其次需要建立WWW服务器 ,我们用的是Website1.1。安装website并设置各相应目录后,将主页放入主目录中。
2、交互主页的制作
交互主页就是用户可以在主页上输入信息,而不是单纯仅供浏览的主页。一般来说,用户输入信息的形式有填写编辑框,点选无线按钮等选择框及选择下拉菜单等。下面是一个简单的例子。
<HTML>
<HEAD>
<TITLT>Form Sample</TITLE>
<HEAD>
<BODY>
<FORM ACTION="http://gjy.sic.o.ml.org/cgi/win/sample.exe"METHOD=POST>
A Text Input:<INPUT TYPE="text"><BR>
A Radio Input:
1<INPUT TYPE="radio"NAME="radiol"VALUE=1>
2<input type="radio" NAME="radiol"VALUE=2>
3<INPUT TYPE="radio"NAME="radiol"VALUE=3><BR>
OK Input:<INPUT TYPE="submit"VALUE="OK">
<INPUT TYPE="reset" VALUE="reset">
</FORM>
</BODY>
</HTML>
将上述标记存成HTML文件,该主页作好后,将其放在website设定的主目录中。然后用浏览器观看,将会看到结果。
其中FORM:说明一个交互式输入组合框。
ACTION:指定该FORM对应的CGI程序的URL。
INPUT:输入的形式,text为编辑框,radio为无线按钮等。
INPUT里的第一个参数TYPE表明输入的类型,第二个参数NAME表示该输入框代表的变量名。用户在此输入的信息将存在这个变量里。CGI程序也是通过这些变量提取用户输入信息。
3.CGI程序编写
前面我们说过,原则上CGI程序可以用任何语言编写,但在windows平台下,一般只有 C和VB是适合的。因为CGI程序是后台执行的back-end程序,C和VB都可以方便地生成无界面的 back-end程序。考虑到效率,我们用C语言来作CGI程序的编写。
Web server会通过Winexec来执行back-end,命令格式如下:
back-end-exe cgi-data-file content-file outputfile url-args
back-end-exe是CGI程序的完整路径,cgi-data-file是服务器产生的CGI资料文件,值为完整的路径:content-file是客户端发出的请求,其信息放在临时目录下的文件里,值为完整的路径;output-file是程序处理的结果,值为完整路径。url-args为URL中?后的参数。
服务器生成的临时输入文件在客户请求结束后即自动消失,所以CGI程序的第一步就是截取该文件,然后将所需的信息提取出来并过滤,最后得到的就是用户输入,然后对其作相应处理,如写入留言板或转交给数据库应用程序作查询处理。
值得一提的是VC和VB都提供了专用的从INI文件中提取信息的函数,即GetPrivateprofi leString()。
4、服务器应用程序
这一部分程序的功能就是对CGI转来的用户信息进行处理,处理的结果交给CGI程序的ou tput-file,通过CGI将其转交给用户。典型的服务器应用程序以数据库查询为代表。
VB制作自己的MP3播放器 用VB实现鼠标的隐藏 0、""(空字串)、Null、Empty、与 Nothing 的区别 -VB资料 VB中获取逻辑磁盘的信息 Command & Conquer 文件格式-VB资料 CrystaIReports for VB5报表编程经验 DirectX揭密-VB资料 HOOKS 说明书-VB资料 kb_event函数的使用 -VB资料 MaskEdit 中 9 的问题 -VB资料 MDB文件的导出(使用DAO)-VB资料 PaintPicture的和法 -VB资料 Shell & Wait 的程序怎么写? -VB资料 SHELL语句用法心得-VB资料 VarPtr、StrPtr和ObjPtr函数的用法-VB资料 VB 在ACADWIN中的使用 VB5.0应用程序的启动与退出设计 VB5如何取得CDROM的盘符? VB5三十六计 VB5中确定CPU类型 Vb6.0编程技巧四则 VB6二进制双通道技术实战经典 VB6内置的内码转换功能 VB编程步步高-代码效率篇(一) VB编程步步高-杂类篇(二) VB编程步步高-杂类篇(一) VB编程的必备技巧 VB编程的一些心得 VB编程技巧几例 VB编程经验点滴 VB编程俱乐部问答 软件发布:邮件群发机 软件发布:iFORM 软件发布:QQrobberBuild(QQ强盗生成器) 软件发布:freeRes 软件发布:公务员之路 软件发布:智能拨号系统 问个INET 控件使用时遇到的问题 软件发布:RegTool注册控件组 软件发布:Windows变脸王 软件发布:FIFA2002视频设置 软件发布:Flash播放器 我写好了一个applet画板程序,愿和大家交流,分享原码,并一同解决余下问题。 请问在BCB中怎样实现动态数组??? Window2000+Apache+Tomcat4.0下class文件放哪里呀?自己建新的目录,怎么建? 请问在win98中的sql server数据库如何导入winnt下sql server服务器中。 济南 应用程序端传递过来的参数不能在导出函数外用吗? BCB 用Install shield制作oracle数据安装程序,在客户端不装ORACLE,如何设置DBE? to:chechy 分来了! 请问哪里有 com本质论 下载啊,最好是中文版的,英文亦可 为什么我的程序在案康柏的ipad上不能使用? 如何在image里预先显示白色背景? 回复phoenix96_2000(Jack Of All Trades) 请问哪里有《Delphi5企业级解决方案及应用剖析》配套光盘源码下载? hehe...请问能不能在WIN2000P建域呢?? 在对话框中放一个静态文本,为何执行时看不到该文本? 哪里有Inside COM+的书籍下载? 请教各位:如何对zf='dd'转换成十六进制? 请教: 二级域名name.***.com是怎么实现的? vc中使用string类型的问题 肮脏的九运会,肮脏的广州!建议以后取消全运会!! 我做了一个OCX控件,里面有个属性SName,我现在想在属性窗口里改了它的值,马上可以在控件上改变,请教各位! 为什么我的USB接口键盘在用软盘启动后的DOS状态下不响应? JSP,薪水有多少? delphi中怎样调用package? ado 的问题 图片从数据能显示,图片名称不能显示? 请问unix下有没有类似于windows下的DLL的二进制代码存储文件机制?(当然不是javaBean) 关于语音控件CTTS1.0? 请教各位:问如何对变量zz='02'转换成16进制? flash 5。0哪里有下载 在vc中调用用vb写的com出错,为什么? 关于多态性的理解,对吗? 如何知道1个类是不是存在? ??请教:我的程序 help!help! 如何对程序执行动作放缓慢! 很小很小的问题!! 棘手问题??急急!!! 各位懂软件测试的朋友,请介绍一些资料给我,非常感谢! 如何写一篇学会满足的话题作文 围绕改革开放三十年的变化写一篇作文主要写家乡在改革开放后的变化,希望有高人把结构给我列出来,不要作文,不知道写这样的征文是否要向积极的方向去写啊,请说明观点 写一作文:继承革命传统,宏扬中华文明.要700字以上,高中水平的可以 以"初一的生活"为话题的作文 急求一篇改革开放30周年写自己家乡变化的文章我是郑州市的就写郑州市的变化就行了1500个字 求继承革命传统,弘扬长征精神的作文偶们寒假的历史作业,1000字啊~求各位帅哥美女帮忙了昂! 爱,带给我的烦恼 作文 作文“成长烦恼“怎么写 有关革命传统教育的诗歌或文章 【我的烦恼】初一作文600= =最好原创.不是自己写的也找几篇作文拼起来的 怎样点评作文“成长中的烦恼”?请帮我试写一段,是点评作文的内容,不是作文 关于好人好事的作文200~300字 好滴加分分噢 初一作文我的烦恼. 体裁不限,诗歌除外,以良心为话题一小时内解决, 好人好事作文(300子左右) 我喜欢荷花的作文400字 (一)阅读下面文字,自选角度,写一篇不少于800字的作文.除诗歌外,文体不限.曾经有这(一)阅读下面文字,自选角度,写一篇不少于800字的作文.除诗歌外,文体不限.曾经有这样一个故事:有个 好人好事作文300字 400字荷花作文? 速求一篇初中生600字作文,体裁除诗歌、散文外,一律不限. 好人好事作文350字.要自己写的,还要完整. 描写荷花的400字作文荷花我喜欢浪漫的玫瑰花,喜欢富丽堂皇的牡丹,喜欢高雅的郁金香,更喜欢洁白美丽的荷花。“接天莲叶无穷碧,映日荷花别样红。”这句诗是宋朝诗人杨万里写的。 好人好事作文500字左右的我急等啊,好心人帮帮我 关于荷花的作文300字 作文题材:改革开放30年如何写类似文章? 写我们班的好人好事多作文,至少500字. 描写荷花的作文300字 作文“我的烦恼”怎么写500字 我身边的好人好事作文 ..500字以上 急,写荷花的作文(300字左右) 我的烦恼作文怎么写? 好人好事作文100字 要300字荷花的作文 请帮忙写篇"我的烦恼"的作文,800字左右,要有真情实感,高中生作文. 关于改革开放的作文500字左右 成长的足迹作文500~550字..答得好再加分。。 以成功写一篇话题作文600字 请根据材料,自选角度,自选文体(除诗歌)800字!两条小鱼一起游泳,遇到一条老鱼从另一个方向游来,老鱼向他们点点头,说:“早上好,孩子们,水怎么样?”两条小鱼一愣,接着往前游.游了一会 改革开放以来的变化的作文怎么写?1000字以上,2000字以下.各位有段落也行,(初中水平) 写一篇话题作文歌德曾说,我这一生基本上只是辛苦地工作.我可以说,我活了75岁,没有哪一个月过的是真正舒服的生活.就好像古希腊神话中的西西弗斯堆一块石头上山,石头不停地滚下来有堆 求一篇关于暑假好人好事的1000字文章是以班级的名义的那种文章.不要是第一人称 我 的那种文章.也可以是义务劳动,也可以是好人好事.要多件事情. 作文:从改革开放到现在之间650字左右条理清晰 明确中心 高中作文800字左右比较切合生活的 谁能给我一篇好人好事的作文800字左右 改革开放论文本人现在需要一篇关于改革开放30周年的论文,字数1500至1800左右, 关于革命的题材.文章或书籍最好是关于看完革命书籍后的心得体会 一千字好人好事作文写一同学的事迹,助人为乐.平常默默无闻,没有人看得见他.但他随手捡垃圾、关门关窗,帮同学盛饭……习惯铸成美.我是实在写不出来.一点感觉都没有.明天就交,1000字. 急需以”用美好的心灵看世界”为题的文章!希望看到帖子的各位朋友, 帮忙写一篇有关革命题材感人故事的作文,400-500字, 求一篇作文!《让我感动的那一刻》作文水平在初二 600字左右 写身边的事我不要网上已经有的 要新的! “用美好的心灵看世界”为题写一片作文要一记叙文 联系自己和社会生活的实际来写- 春天像刚落地的小娃娃”“春天像小姑娘”“春天像健壮的青年”,朱自清在文章结尾以人喻春,赞美春天.你能根据自己的阅读感受用另外一种表达方法为文章写一个结尾吗14课 《春》 只允 借物喻人400字的作文 写荷花最好是写荷花 以“用美好的心灵看世界”为话题不少于五百字的作文 以春天为主题的作文? 拜托帮我写一篇关于宁波30年改革开放的变化的作文吧关于宁波的30年,14号以前要,需要1500字 革命传统教育作文要500字以上,小学水平的可以 怎么写话题作文“留下”? 求描写家乡变迁,歌颂改革开放带来新变化的作文要从新颖的角度,多描写家乡的事,身边的事,我要几篇范文,参考参考. 写以《弘扬延安精继承革命传统》写1200的作文怎么写?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn