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

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资料 动记录应用软件工作时间-VB资料 动态改变屏幕设置-VB资料 读取档案的建立时间及存取时间 -VB资料 多个参数的属性 -VB资料 发现剪帖板的秘密 -VB资料 发现拖(Drap)过来的信息 -VB资料 防止打开同个VB应用多个实例 分割图像的原理 -VB资料 封面的设计 -VB资料 改变 Win95 的 Shell -VB资料 改变墙纸 -VB资料 格式化磁盘 -VB资料 跟我学用ActiveBar-VB资料 VB获得IE的版本号 VB获得Windows启动方式 VB获得打印机驱动程序的设定 VB获得当前计算机上的区域设置 VB获得当前用户名 VB获得分区信息并判断是否有CD VB获得某个文件夹下的所有子目录 VB获得驱动器的卷标 VB获得系统中的所有字体列表 VB获得系统中鼠标的键数 获取驱动器信息-VB资料 文章主题: 获取桌面图象 -VB资料 计算两个日期间的工作日-VB资料 监视外部程序的运行情况-VB资料 检测文件是否存在 -VB资料 检测系统驱动器-VB资料 检查电子邮件地址输入的有效性 -VB资料 如何创建ADO的ConnectionString ? oracle 连接问题 我想考scjp,我想了解它的时效性,意思是几年之内不用再考一遍 怎么获取服务器端机器名称 关于delphi开发工具与其他开发工具的比较? dos界面下如何用dll调用一个.exe文件 dos下如何设置硬盘的电源管理。关闭硬盘停止响应功能的命令。谢谢 Python news 3-19 客户端会出现commandtext does not return a result set提示怎么办? 在BCB中,怎样向一个存储过程的一个DateTime类型的输入参数传递值??????? 我在datawindow中加个按钮,script在那里写,请帮帮忙 祝檬檬生日快乐~~~~~! win2K pro版无法启动! QueryPerformCounter()函数的用法? 求教:如何在delphi 5 中使用HTML Help(.CHM) 神经元网络BP算法源代码? =急=急=急=这个SQL语句是什么意思?? 从数据库读出的一个问题 我昨天在使用过程中发现如下问题,希望能得到您的答复! 请教一个如何写如下的存储过程:查找'abcd',允许错两个字符(错误位置任意),例如'abef'可以, 但是'aefg'不行 小弟学习c有一段时间,究竟学到什么程度才能开始学c++呀? 各位,有没有碰到过这种情况! =急=急=急=大家来看看这个SQL语句是什么意思~~ 在ACESS2000的查询中如何/可否使用ISNULL函数。请举例。 c++ 搞什么呀?不是说有专家回答吗?人呢? blob字段的长度限制是:????? 这样的公司我呆下去还有没有意义? unix 消息队列 这是什么意思??? XML还有什么好处? 读写文本文件的问题??急 程序中每一个按钮和动作对应一个存储过程好吗? 按回车键时,在TEXT中输入大于号怎么实现,谢谢! 请问高手:怎样在interDev6.0中调试程序??? 在jb6中,如何制作包含jdbc和自定义包的jar文件。 问一个很菜的问题:怎么使用编译器? 一个让我头疼的问题,大家来帮帮我! 送分!!!送分!!!!救命救命!!一共200分 何处有单独的SQL Anywhere 5.5下载,只是驱动一下,并不用PowerBuilder开发 www.%s.co.cn如何解决? 请问怎样用VBA将office文档转换为txt文件?? 绝对超难问题,答对的话给50分!!! 为学java散分 说说borland c++的发展史吧 谁能告诉哪里能申请教育网的免费邮件地址,或你给我一个算了,100分给你! BP神经元网络算法的原代码 如何在网页上看ASP的原码? 我用另一台机的SYBASE备份文件拿到本机来恢复,居然不行!请教高手! 关于模板的问题,还请大家多多指点! 我用串口接受数据,可是??? 紫外测COD波长为什么是254 平行金属板其中一板接地,则平行金属板间的场强会变吗? 我想问建筑用的国标钢材如何计算重量 吹出来的美丽的肥皂泡,求它的配方 两块平行金属板与电源相接,其中一块金属板接地后电势为零?或者说明相关的定理至于电势为零的意思是否就是指该点或平面的电压为零?或者是指金属板不带电呢? 离子所带的电荷和化合价化合价的正负价有关系吗?比如说Na+和Na的化合价+1价有关系吗?坐等. 如何快速提高数学和英语成绩(高中的) 两平行金属板间有匀强电场一板接地电势为什么为零,电场强度为什么不变?两平行金属板间有匀强电场,一板接地电势为什么为零,电场强度为什么不变?物理必修3-1 怎么确定离子所带的正负电荷数是多少?跟化合价有什么关系? 怎么快速提高数学英语成绩我是高二文科生 描写肥皂泡的段落描写肥皂泡的的样子. 这我有问题:同种元素(或原子团)的化合价和离子的电荷数通常数值相等,正负号相同,只是书写的位置不同问题1、又不是所有的物质都由离子构成,怎么可以说“同种元素(或原子团)的化 怎样快速提高英语数学成绩?我现在初三,初二初三的时候数学英语都没学,根本不懂,现在离中考还有两个月.怎样快速提高成绩? 哪里可以下载初中数学概念大全?初一初二初三的、还有英语 “肥皂泡炸裂时温度比太阳还高”这句话可信吗? 离子,原子最外层电荷数和化合价问题我在做题时发现,当一种元素中的原子变为离子的时候,失去和得到的电荷数和其化合价好像是相同的,比如镁,Mg,离子表示为Mg2+ (2+右上标注) 化合价为+ 晶胞的理解? 水平放置的两块平行金属板A、B相距为d,电容为c,开始两板均不带电,A板接地且中央有孔.现将带电荷量...水平放置的两块平行金属板A、B相距为d,电容为c,开始两板均不带电,A板接地且中央有孔. 肥皂泡一文4~5自然段哪些词或句子把作者吹肥皂泡的心情和美妙想象都写出来了 什么是超晶胞 相距为d,水平放置的两金属板a,b的电容为C,开始时都不带电,a接地且中间有孔现将带电量为Q,质量为m的带电液一滴一滴从小孔正上方h处无初速地滴下,竖直落到b板上层,电荷全被b板吸收,重力加 用横线把作者吹肥皂泡的心情及感受画下来.应该画那几句? 蛋白质中含氮量平均为16%,以某合格奶粉蛋白质含量为18%计算,含氮量为? 过硫酸钾氧化-紫外分光光度法测总氮220nm波长吸光度过高我用过硫酸钾氧化-紫外分光光度法测总氮时在220nm波长的吸光值都是大于1(用的硝酸钾标准液的浓度时10ug/L硝酸钾),而在275nm波长的 吹起的肥皂泡后面那句是什么 肥皂泡是如何制作的?怎样配制这种溶液?我要做一个魔术,要吹出得泡泡时间持久的肥皂液. 碱性过硫酸钾紫外分光光度法测定水中总氮时,为什么要在两个波长测定吸光度? 怎样快速提高数学英语成绩! 如何制作美丽的“肥皂泡”? 总氮的测定:碱性过硫酸钾分光光度法测总氮我加完碱性过硫酸钾怎么不显色啊加氮完也不显谁知道为什么啊 测土地的ph值 需要用水稀释成水溶液 用多少水好呢 如何做肥皂泡 我刚刚开始做水中总氮的实验,碱性过硫酸钾紫外分光光度法, 如何选择适合的稀释度的土壤悬液接平板 电容器为什么要接地接地是为了电势为零 那你直接规定那一极电势为零就行了 还接地干嘛接地电荷还会改变 使情况更复杂 小明每分钟吹一次肥皂泡,每次恰好吹出100个,肥皂泡吹出之后,经过一分钟有一半破了,经过二分钟还有1/20没有破,经过两分半钟肥皂泡全破了,小明在第20次吹出100个新的肥皂泡的时候,没有破的 土壤的称取和稀释都为何应在火焰旁操作 肥皂泡如何制作,注意,不要胶水,而且泡泡吹出来要好看,一连可以吹出很多个泡泡! 小华每分钟吹一次肥皂泡,每次恰好吹100个.肥皂泡吹出后,经过一分钟有一半破了,经过两分钟还有二十分 算离子电子数时,离子的核外电子数=原子序数(之和)-所带电荷数,为什么要“-所带电荷数”?比如,NH4的电子数=7+4-1=10,为什么? 晶胞参数的求法设一个原子的半径为R,那么体心立方堆积的晶胞参数为R=根号(3)/4*a;金刚石型堆积的晶胞参数为R=根号(3)/8*a.问个很菜的问题,这些答案是怎么推导出来的...最好有图解... 亮亮每分钟吹一次肥皂泡,每次恰好吹出100个.肥皂泡吹出之后,经过一分钟有一半破了,经过两分钟后还有二十分之一没有破,经过两分半钟肥皂泡全部破了.小明在第100次吹出100个新的肥皂泡 离子电子数等于原子或分子电子数加上或减去所带电荷数? 电容接地数字芯片中,数字地接一电容作用.我也知道大概就是过滤 防干扰吧 原理是什么呢? 牛吃草问题:小军每分钟吹一次肥皂泡,每次恰好吹出100个,肥皂泡吹出后,一分钟后一半破了,两分钟后还有二十分之一没破,两分半以后全破了.那么,小军在吹完第20次后,还有多少个肥皂泡没破 怎么提高数学成绩和英语成绩 肥皂泡?小明每分钟吹一次肥皂泡,每次恰好吹出180个,肥皂泡吹出之后,经过一分钟有一半破了,经过两分钟还有百分之5没有破,经过两分半钟肥皂泡全破了,小明在第30次吹了80个新的肥皂泡的时 王涛吹肥皂泡,每分钟吹一次,每次恰好能吹100个.肥皂泡吹出来后,经过一分钟有一半会破,经过2分钟只剩没有破.经过两分半钟肥皂泡就全破了.当王涛第20次吹出100个新肥皂泡是,没有破的肥皂 凹凸透镜成像规律最好附带探究的过程及结论. 我总是不会找晶胞,谁能教教我?是不是晶胞向左向右向上向下平移后会重合? 如何快速提高数学和英语成绩小女子今年都高三了,数学和英语成绩一直不好,想提高一下,请问各位大侠该怎么办呀?有什么方法?现在我可是快急死了 对凹凸透镜成像规律的研究 请问电容接地有什么用? 总氮的实验数据超出方法最高检测限(4mg/L)怎么处理?方法是碱性过硫酸钾紫外分光光度法 凸透镜成像规律 紫外分光光度法测定COD用纯水调零还是空气调零为什么 碱性过硫酸钾消解水样,测总氮, 220nm 吸光度变得很小,原因何在?之前测的时候220nm的时候大约是1.378这样的大小,但是最近测了几次,在220nm的时候都是0.079这样,突然变得很小,请问为什么呢?是在 .关于凸透镜成像.凹透镜成像.平面镜成像的原理如题.顺便说下在什么情况下成的像是什么.例如:正立放大的虚像. 国标COD检测 空白试验的值有多少空白试验中消耗硫酸亚铁铵标准溶液的用量 平行金属板其中一板接地说明什么 国标罗纹钢的重量怎么算?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘