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

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将其转交给用户。典型的服务器应用程序以数据库查询为代表。
微信开放WiFi接口,醉翁之意在乎O2O还是大数据? 软硬整合:基于云的微型智能防丢设备Linquet 【MDCC专访】AppCan CTO赵庆华:助力企业快速移动化 使用Bluemix中的Rules服务构建一个酒店预订应用程序 基于IBM Bluemix开发微信公共账号应用 用Cloudant在Bluemix上构建一个简单的文字游戏应用程序 IBM Bluemix是什么? 【最具价值CTO评选秀】纷享销客CTO刘晨:企业移动的技术挑战 【最具价值CTO评选秀】能做存储的超级计算机——任宇翔和以色列团队的创业故事 OpenStack Swift存储策略 分享5个可视化的正则表达式编辑工具 在iOS程序中使用Bluemix云推送服务 GitHub开源任务列表组件 表白健身小能手!详解Apple Watch特色功能 高逼格不任性!个人智能航空摄影飞行设备ZANO Clappr——开源的Web视频播放器 东软举办2014解决方案论坛 将全面推进BBC战略 Google Glass已死,智能眼镜长存! 五个步骤,保护移动应用免受恶意攻击 声波改变移动社交——参加联想“茄子快传”创意征集 赢取平板电脑大奖! 车载硬件Baen:被游戏化的驾驶体验 深入解析Docker背后的namespace技术 响应苹果要求:Qt 5.4、Qt Creator 3.3同迎RC版 击碎泡沫谈发展,盘点OpenStack商业生态圈! 2014年11月操作系统份额:Windows 7雄居第一,XP跌新低 微信开放平台上线统计报表功能 【向导】如何开始学习高伸缩性编程? 基于Apache Samza,揭秘LinkedIn架构背后的技术 Aeron:每秒可以传递数百万消息的低延时开源消息系统 英特尔物联网马拉松:用创造力改变生活 年末总结:2014年全球手游市场发展的六大趋势 求助:如何调出linux下kppp源代码? www.clpclub.com是不是不能上了? 如何制作登陆窗口? 关于中大型网站如何应用软件工程的问题 求救高手,如何使双硬盘同步写 请问怎样在用户点击(s)后将用户点击的软件自动安装到用户(c)的机器上 请问如何用网站提供的搜索引擎,知道查找关键字,我用的是WebBrowser1,100分呀 tomacat的配置问题?急 学过严蔚敏的〈数据结构(C语言版)〉的请进! 开发过nokia上运行程序的朋友,请进来,本人遇到一个非常麻烦的问题,欢迎各位赐教. 如何从字符串中提取单词? 谁知道那里有longhorn下载??? 100分请教实现播放列表的思路? 有关图形化公交车线路的问题!! 关于网站软件工程的问题 我的sqlserver 2000 在安装的时竟然说什么不支持??? 免费ASP空间申请 有关用Firework作网页模板的问题-急! 大虾请指点~~!!~~ 如何固定游戏中的分辨率? 今天见到了蓝心MM,估计她是CSDN有史以来最PL的MM。 也来贴一篇!!!送给大学毕业几年的哥们!(转) 急:关于weblogic的控制台 ? 请问各位:哪里有好的javascript的教程? 小问题 请问在哪里可以找到监控局域网的网络流量的工具,不够再加? 免费ASP空间申请 白羊座的进来领分,水园里白羊座好像很少。。。。 ie无法编译jsp? 300分!求《程序员增值合订本》上册中的"完全掌握TCppWebBrowser控件"内容! Google搜索从入门到精通(散分) 由于工作需要,将要转到Linux平台,请问那位知道有什么好的SQL Client在Linux下? 由于工作需要,将要转到Linux平台,请问那位知道有什么好的SQL Client在Linux下? 你是怎么过的?CSDN无高人?:( 找asp.net入门经典!一定是C#写的!!!在线等! 菜鸟的关于DataGrid的问题 资源管理器中选中的多个文件怎样传给我的程序 什么是“三层数据库”和“嵌入式软件系统”? 什么是“三层数据库”和“嵌入式软件系统”? 类似"hello world"的简单问题,求教 免费ASP空间申请,支持ACCESS 事件的终止? 数据追加求教:谢谢您!!!! 请问InputBox在framework 类库里面有没有代替的阿? 为什么我写到文件中的字符总长度比我实际应该要写的多? 如何使dbctrlgrid多选,并使鼠标右击相当于鼠标左击 关于静态IP地址,急!!! 如何将tomcat做为windows的一项服务启动? 请问各位大虾,哪有paradox(INPRISE 公司产品)数据库(*.DB)的资料? 非法操作的问题 有十五字的拟人句用蜜蜂 发光强度(光度)的含义是什么? 求求你了,回答我吧 除去括号中的少量杂质气体可用NaOH固体的是 ( )A.co2(co) B.o2(so2) C.H2(NH3) D.co2(hci)并说明下、 市场上什么样的纯牛奶最安全 Let me ___ it under water,put some medicine on it and put a bandage on it. 帮忙打出几个字3QRT 请问b选项和d选项. 1+1=?, 用“被”字造拟人句 高二生物D选项哪里错了 You should put some medicine on your cut.(变否定) (釜)字怎么发音拜托各位了 3Q 高二生物37的b选项为什么是错误的!无法理解T^T 3Q 我呆的地方比较冷.你们可知道那种电器发的光度.又高.又热.光度又远.知道的说一下. 世界上亮度最低的地方观赏星星最佳的地方,不受光污染,星星亮度最高 我要20篇400字的日记我想不出来这20篇400字的日记,所以想请你们帮帮忙 显示屏是飞利浦190V的,发觉显示屏亮度太亮了,很刺眼,要怎么调暗一点, tired……need a nap 外国人会这样讲么,还是说have a nap 200字日记你今天发生的事拜托各位了 3Q 明度与亮度的区别请问明度与亮度的具体区别是什么?据我所知,明度分为9阶,那具体的数值是什么?而亮度是0~255,具体的数值单位又是什么? 氧化镁和盐酸为什么不反应? 为什么顺式-Pt(NH3)2Cl2的水溶解度比反式大?请从配合物分子的结构本身说明. 光度,视亮度.各是什么,.它们各是什么定义.它、们之间好像可以互算的,怎么算,.越详细越好, Why don't you have a afternoon nap? excel2010如何同时画折线柱形图 锐利什么意思? 请问一下知道了分光度之类的要怎么计算呢 He used to have a nap.一般疑问句.为什么是Did he use to ……而不是did he used to ……?used 明明是形容词啊 锋利、锐利的反义词是什么?所要的答案要在词典上查得到的双音词,请说明哪一部词典. 化学反应工程的研究内容 我理解的艺术是能给人带来美的享受的, (武器丶言语等)锋利;锐利这个是什么意思 [Co(en)2Cl2]Cl中心离子的电荷及配位数 懋字 怎么表达美的意思 锐利是什么意思急!急! 化学命名[CO(en)2cl2]cl命名,中心离子,配位体那配位数是几阿 some kids play soccer ————every weekendclean if live there open world park and turn hour come hungry选一个 色彩锐利,锐利什么含义 化学反应工程开发中需要手机哪些数据?细致一点,答得好加分... 求求你啊 35字的拟人句列:家就像根,永远是树叶的家;家就像红布条,永远系着游子的心,家就像大衣一件,不会提高温度,但却给予人们连火炉都不能替代的温暖. 初三比较重要的化学方程式 求求你,怎做 7R 是什么意思? Pt(NH3)2Cl2的同分异构体,可溶于水,可治疗癌症结构简式是什么?为什么呢? 求求你了! 锋利是什么意思? “消光度”的定义是什么? 求求你,告诉我吧 锋利的意思是什么如题 Pt(NH3)2Cl2 中心离子是Pt2+,配位体是NH3和Cl-,它有顺式和反式两种异构体.如图为什么cl-也是配位体而不提供孤电子对 告诉我吧,求求你啦 锋利无比是什么意思 “黑亮度”的定义 与电源正极相连的试管内产生的气体是氧气 这句话哪里错了? 17题.详解. 什么是烛光亮度?定义是什么? 英语翻译八年级下册英语第一单元句子翻译中文 姚贝娜侯磊同入酒店疑似姐弟恋泰国北部发生重大交通事故 造成22人外媒称叙政府将在24小时之内提交销毁阿富汗情侣私奔 疑遭女方家属私自处决津巴布韦国家公园巡逻员被大象踩死朝鲜同意韩国议员访问开城工业园区中国房地产商在澳大利亚投资正“风生水美乐坛小天后蕾哈娜在阿联酋大清真寺拍澳大利亚一消防飞机救火时坠毁 驾驶员澳洲国防部被指是林火“罪魁” 灾区官欧洲央行开始对欧元区124家银行进行德两大政党举行组阁谈判 默克尔称社民沙特暗示拒任“非常”是针对美国 恐与俄外交部:叙之友文件旨在煽动破坏叙问浙江宁波出台国内首个网购争议处理办法杭州破获特大涉毒涉枪案 缴获冰毒2.网友分析杭州地铁4号线开通后1号线票北极理事会秋季高官会聚焦负责任开发北被砍右手男孩:对“爸爸”没有恨 惦记被砍右手男孩:看到水果刀赶紧闭眼 看两部委取消314项省级行政事业性收费黄华塘社区 调解两件邻里纠纷事件南庄整治违规施工两月扣车27辆史上最严交规出台 新政助力新能源车推一女子招聘公司楼顶坠亡揭秘巩俐早年差点嫁给摩纳哥亲王内幕陈冠希欢度圣诞 女友合影亲密依偎斯诺登 整天拉面薯片度日白鲸抢镜哈哈哈航班正点起飞统计有新标准“计算机之父” 去世59年后获赦免2014年春运汪峰圣诞示爱子怡: 感谢真挚的爱快看看送啥圣诞礼物了24小时篮协领导任主席,行使一票否决猎豹追狗不吃狗 原来都是好朋友人大代表为社区工作把脉问诊常平商贸旅游文化节启动举债迎检查陪吃喝,为了啥?生活垃圾可变废为“宝”深圳车库挖地道 穿过边界通香港
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘