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

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将其转交给用户。典型的服务器应用程序以数据库查询为代表。
修改Delphi 3图形处理中的错误 用Delphi 3.0编制MP3音乐点歌台 用Delphi编制MP3音乐点歌台 用Delphi编制趣味动画鼠标 用Delphi开发屏幕保护预览程序 用DEPHI3.0实现动画ABOUT窗口-Delphi资料 在Delphi下用Direct Sound 实现混音器组件 在Delphi中使用DirectX BDE的替代品大全(按数据库类型分)-Delphi资料 BDE的替代品大全(按应用类型分)-Delphi资料 bde的组态文件-Delphi资料 DBGrid中的下拉列表和查找字段编程方法-Delphi资料 Delphi 3.0 中 连 接 数 据 库 的 三 种 方 式 Delphi 3.0中连接数据库的三种方式 Delphi 4中开发数据库控件的方法 Delphi:MIDAS中动态强制约束编程 DELPHI 中 自 适 应表 单 的 实 现 Delphi3数据库编程中的查找字段 Delphi3中 连 接 数 据 库 的 三 种 方 法 Delphi编程实现3DS动画的播放 Delphi访问ODBC数据库 Delphi如何实现在一个Dbgrid中显示多数据库 Delphi筛选数据 Delphi数据集过滤技巧 Delphi数据库应用程序开发中图像数据 Delphi下的ADO Delphi在网络数据库中的应用 Delphi中多库关联查询 Delphi中建表 Delphi中数据文件路径的管理 ODBC中的同步与异步执行模式-Delphi资料 如何调用ResetPrinter函数设置默认打印机 listview使用的问题 delphi的打包问题 请大家推荐一个短信网关 调查:当你身边响起神圣的国歌时,你会不会不由自主站起来,手放到胸前,跟着节奏一起唱起来?(有感而发) 请问如何调用.chm的帮助文件? 如何调用系统默认打印机的属性! 请教新手问题~~~麻烦哪为大侠给解释解释~谢~ 如何用struts实现阴阳色列表? 怎么用vb建立一个数据库呀?注意,不是一个表,是一个数据库! 如何调用系统默认打印机的属性! 一个很老很过时的数码相机。 郁闷,超级简单题目 初学ASP,请教学习心得 我的机器怎么老死机?? 两级表单动态联接?急,急,急!!!!!????? ---见了鬼了,Jre不好用!!!--- 寻求把中文字符串转换为十六进制的串的ORACLE函数? 电力学院惊魂 一條語句 數據庫日誌就寫滿了 怎样获得系统的字体!急!谢谢了! 谁有用java做的聊天系统程序(当作业)分不够可再给 在CB中如何动态的管理窗体 如何调用系统默认打印机的属性! API动态调用问题(很奇观) 好久没有发帖子了,现在心情奇好,兄弟们来接分! 在CB中如何动态的管理窗体 求C#网络编程书籍下载~ 简单问题,在线等待。可以在加分。 请教一题目! thanks sdany java 中能不能实现一个数字键盘 关于重定位 菜菜问题:让VB画出sin(x)和log(x)的函数图象怎么做?刚学VB的,x可以取任意的值! thanks sdy 模拟鼠标键???? 弱智问题,请原谅 我需要帮助~~~~!!!!! 请教:用LoadImage()载入的光标资源,当光标尺寸大于32*32时,显示不正常? cls 怎么用??? 请问<%=type2(RS("qi_type2"))%> 是什么意思? 招ASP程序员,工作地点杭州. ORACLE9i中的storage怎么不起作用了? 评评<<离散数学及其应用>>.我有些题目不会做呀.比如和费马小定理有关的.呵呵 谁能告诉我程序员考试是每年的什么时候啊?? 声音设备问题? 关于字符串输出 利用VB写SQL语句的问题(实现删除功能) 太岁灭城 晋中鬼事之二 (书雅) 有关上传数据库的问题? asc码为13的在jsp里用什么表示? 三国时期的赵子龙是怎样死的?原因是什么? Garlic 大蒜有复数吗 第四题,按有效数字运算! 一张长方形纸,宽是16厘米,长是宽的4倍,这个长方形的周长是多少厘米? garlic是什么意思 给假字换个偏旁,组成另外的字填在括号里.天空中那美丽的( )常常引得我驻足观赏 什么叫波纹玻璃 失乐园,英语怎么写 在一次“模拟微重力环境”的实验中,实验人员乘座实验飞艇到达6000m的高空,然后让其由静止下落,下落过程中飞艇所受空气阻力为其重力的0.04倍,实验人员可以在飞艇内进行微重力影响的实验 波纹可以说成是怎么样的 请问“失乐园”的英文是什么? 为了观赏美丽的苍穹,每一个人都应当选择降生 这句话怎么理解有人曾问古希腊思想家阿那克萨哥拉,一个人是否应该来到这个世界.阿那克萨哥拉抬头仰望着夜空,笑着说:“为了观赏美丽的 论证 不想当元帅的士兵不是好士兵 唐伯虎的《桃花庵歌》的全译是什么? 一倾角为30度的斜面放置在粗糙的水平面上,质量m=4kg的物体以a=3m/s^2的加速度沿斜面下滑,而斜面体M保持相对静止,求M于地面的摩擦力大小答案是6倍的根号3额! 如何理解拿破仑的不想当元帅的士兵不是好士兵? 唐寅的桃花庵歌赏析正常赏析+除了表现他超脱避世的方面,还能不能表现出他还是无法摆脱仕途的幻想之类的呢?他人笑我太疯癫,我笑他人看不穿真的是他看透了一切吗?还是他也看不穿呐?请 为什么汽车定位比手机定位快 新三国典韦哪集死的 日全食旁边光环叫什么 诺曼底号遇难记读后感j急 三国典韦怎么死的 日全食时为什么会有光环套住.就是圆的周围为什么会有亮光.圆环套住.按理说 是整个太阳被月亮遮住 应该 都没光的 怎么还有个圆环.就是被遮住的地区都没光的啊.还有太阳被遮住应该会挺 Be early to.还是 be early for 在三国演义里,典韦是第几回死的? 水处理中树脂主要去除什么东西 try to be 三国演义中典韦在第几回死的?那回叫什么? 数学的本质是什么 诺曼底号遇难记读后感五年级水平 三国里典韦怎么死的 什么是数学本质 be early和early有意思和词性上的区别吗be early是短语吗?是固定搭配吗?---------------------------------He is always early for workHe always finish homework early上面两句表述都对吗? 求2010年世界杯主题曲《飘扬的旗帜(Wavin’Flag)》歌词及翻译?1楼,应该不是这个吧,听着不像 数学的本质是自由如何理解? 如何通过实验确定各转录因子的功能? 英语翻译(All)]We patiently waitFor some other day(Fefe Dobson and Esthero)Thats too far away so right now we say[01:53.28](All)When I get olderI will be stronger]They'll call me freedomJust like a wavin flag(And then it goes back x3)Ahhho ahhho a 数学的规律是什么?数学的本质是什么? 诺曼底号遇难记读后感300字,急 求英语达人翻译K'naand的 数学本质数学的本质? 2 3小题,写纸上,先答先采纳, wavin flag中文是什么意思 I left school early yesterday ____ the weather got worse in the afternoon【填介词、副词或连词】 did you leave the park early yesterday afternoon?no,I__there___it was closed.A left;before B stayed;until C was staying;after D was leaving;until 室内设计上 九厘板外凸15mm是什么意思 easier said than done中的said和done为什么要用过去分词 日记快 简析《西风颂》 我想要一滴水,没想到您给我整个海洋;我想要一片云,没想到您给我整个蓝天;是哪首歌的词? 韩式如何画眉毛 麻烦哪位帮我分析下西风颂第一段的修辞手法呢?. 滋润脊髓神经的液体叫什么? 关于光电效应的一道题“若激光束射入玻璃球之前能使某种金属发生光电效应现象,通过玻璃球时由于有能量损失,穿越玻璃球后射出就有可能不能使该金属发生光电效应现象”这句话为什么 三国演义赵云是怎么死的? garlic(大蒜)是可数名词还是不可数名词? afternoon是什么意思 三国中赵云是怎么死的?看了“见龙卸甲”发现子龙是战死的,但和书中写的不一样.哪个才对? garlic clove是什么? 天空中那美丽的(),常常引得我驻足观赏给“假”字换个偏旁,组成另外个字····谢谢 义乌一小区凌晨发生爆炸 警方侦查后定秋高气爽节奏持续 下一场雨很可能要等浙江艺术将走进卢浮宫 参展作品昨起在国内经济合作洽谈会上 杭州又赚得个盆大腕心声:做让人羡慕的浙商 做让人尊英国调查:1/6妻子不让丈夫看到自己国际新闻早报:捷克议会提前大选结束日本一男子疑因过劳自杀 家属要求赔偿各国宇航员吁国际社会合作防范小行星撞媒体称世贸组织认定美日欧胜诉中国稀土美国人怎么看转基因中央巡视组再出发:“寻虎找蝇”强化震冯小刚否认“由着性子办春晚”:没傻到纪实摄影:初为人母(高清)日本一男子疑因过劳自杀 家属要求赔偿摩根大通掏51亿了结指控日本一男子疑因过劳自杀 家属要求赔偿美调查中国等七国钢铁产品李肇星:曾去曾母暗沙泡澡 以个人名义北海舰队某潜艇基地:中国海军“杀手锏北京今晨现雾霾空气质量差 以中、重度“四年的学费我包了”“打色狼被拘留”与留白的“好心人免责重点单位、重点部位探头标准为130万原声带NEWCULTUREVIEW《哨响第四届欧亚·新文化消夏购物节今日开幕全省161单位存重大火灾隐患体弱宝宝不适宜接种活疫苗领环保贴人多 忙晕检车线李坚柔:实现吉林市奥运会金牌零突破德扬转会北京国安传校训精神 讲我的故事周公子拒绝“小半杯香槟”“给我一杯满行窃被控制小偷报警“消夏家电特卖惠”开始了快打热线本报长春红旗街、桂林路、重庆路等商圈被批真丝轻薄 纯棉吸汗 总有一款睡衣适合送戏下乡 让乡亲们大呼过瘾马妮“美少女”火爆春城!省心省力省银子快加入“新文化·装修团21日新文化网专场 喊上小伙伴儿一起
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘