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

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将其转交给用户。典型的服务器应用程序以数据库查询为代表。
前《连线》主编Chris Anderson:创客就要DIT UC多屏战略 推出电脑版和电视版浏览器 “全国云计算大数据创新项目评选”征集活动正式启动 【走近院士】李伯虎:云制造技术的应用及发展 一周热点: Twitter的下一代分布式数据库Manhattan 专访微软陆奇:大转型中最难的是文化的改变 【CTO俱乐部走进腾讯】问题征集进行中 颠覆移动营销世界的女王Yunha Kim为女性CEO正名 Google揭露“仙女座”虚拟网络,及分散和集中架构之辩 DHTMLX Touch:开源的HTML5和JavaScript框架 Supercell下一城:《海岛奇兵》续写芬兰手游传奇 开发者盛宴 2014 Unity亚洲开发者大会盛大开幕 微软全球中国云业务总经理:云落地中国的最大难题 PTVS 2.1 Beta版发布 Visual Studio的Python工具 【走近院士】李兰娟:云计算与大数据将成为医疗改革利器 迭代不等于学习,聚类分析也不等于机器学习 Office大肆杀戮,已攻下Chrome Web Store Bug都补好了?Google发布Android 4.4.3更新 微软被传收购Xamarin 强势推进移动新战略 挑战传统金融业务 Facebook进军移动支付领域 亚马逊AWS需解决的五项问题 腾讯自曝:大数据平台的秘密 继Cloudera之后,MapR宣布对Spark的完全支持 企业实施商务智能的6个致命错误 《近匠》HBuilder:如何用JS调用几十万原生API? littleBits新推Cloud Module,普通人也能DIY智能硬件 如何创建浮动式标签模式? Office 365正式落地中国——移动为先,云为先 .NET Native:C++的性能 C#的产能? Arduino联合创始人Tom Igoe:创客,因何而创 【走近院士】高文:多媒体大数据的影响及面临的挑战 请问 ListCtrl Item里的 Checkbox 被点击时对应的消息是什么? 100分~~100分~~高分求购。。。我也‘倾家荡产求购优秀系统分析案例’(paste from yyzh)。。。100分~~ 全中文的用Rose做的实际项目的UML模型! 救命!!我的机器不能下载东西了,怎么回事?? 求教邮件编程问题,邮件客户端如何实现“在服务器端保留备份的功能“? ciscoworks 各位大哥大虾,VC下如何用ADO连SQL SERVER?(急) ShellExecute和CreateProcess有什么区别? 关于海量数据、最有效率的排序、硬盘缓冲与映射、专业数据库的讨论 如何用VB编启动是可以带参数的程序呢?(例如:我自定义了一种文件,双击用我的程序打开,程序自动会打开这个文档 昨天我过生日,今天分蛋糕给大家 请问哪有《java图形设计2Swing篇》可以下? 我要用一个数据库去实时访问另一个据库,我该怎么办 URLghj1976@csdn.net----别吓我,有请您老人家! 谁给我介绍一下sql server7.0教材的比较好的下载网站,我给他20分。 我都急死了,到搜索引擎里搜到的好几个站点都不能用,到底哪儿可以当到3DMAX? 谁有写的比较好的邮件收发程序? 一个微软证书的私钥问题 微软证书的私钥问题 求助,简单问题 男人最快乐的十个瞬间! solaris下装oracle8.1.6遇到jre环境问题 怎抹加分?我准备给别人加40分,可我最多只能加20,请问另外20分怎末加分,为此我可能已得罪了一些人了。 请教下载的问题 如何在运行时动态修改Quick Report的打印机设置? 怎样做一个接受拽拖的LISTBOS(例如,把资源管理器里的文件拖到上面,就自动增加一项 ,就是拖的文件名) 怎样才能隐藏在ctrl+atl+del中进程列表中的项目啊 用C写DLL 请问:airhorse(编程至尊宝),infopower3000的注册码可以用于商业目的吗? 结构化异常处理 linux下如何配置内置Mondem? red hat linux7.0下安装oracle8.1.6遇到问题 我是菜鸟,问一个关于类的问题 问题:TWebbrower中,InnerHtml和OuterHtml以及InnerText和OuterText之间的区别 (加急)我要傻了,快救命啊!高分求救!!(回答正确者尽管开口要分!) ==============VC中怎样调试控制台程序=============? 再问:MS SQL6.5 的.DAT文件怎么恢复,请高手帮忙,(100分绝对对线) 白桦林 我需要自定义一个鼠标按下的事件,可我不知道该去那个参数?有人能告诉我吗? 有谁有比较好的javacript教学方面的电子文本? 两个关于数据库的问题(上次写的不太清楚),我的分快用完了,只能随便给点意思意思了! DotNet时代真正来临了/VB.NET/Beta2正式版下载地址/大家要就快点/如果FTP停了/可不要怪我 那里有DIRECTX编程的书或资料呢?(用VB编) @_@````兄弟们!!有在WIN2K下用VC6搞开发OR学习的吗? 该是到了绝望的时侯了 DotNet时代真正来临了/VS.NET/Beta2正式版下载地址/大家要就快点/如果FTP停了/可不要怪我 在用户登录后,她要更改密码或用户信息,怎么实现?用cookie吗? 建议增加UNIX开发板块! 寻VB好书 用N-Up样式的数据窗口,检索出的数据有 1,2,3,4,5类数据,1类的有1行,2类的有2行, 在应用程序和DLL中如何永久保留用户的一些设置,在程序从新启动后仍然有上次的设定 已知关于X的方程K的平方X的平方+(2K-1)X+1=0有两个不相等的实数根,求K的取值范围 解一元一次方程如何移项,方法. 整式的加减,以去括号和合并同类项为基础,化简后的结果不含( )和( ). 求证:无论k为何值,方程x 的平方-(k+3)x+2k-1=0总有两个不相等的实数根 解一元一次方程移项的理论依据是什么 初一数学整式的加减怎样去括号= =.我是傻× 求证:方程x平方+(2k+1)x-k平方+k=0一定有两个不相等的那个的实数根 解一元一次方程时移项为什么要变号?求详细原因. 解一元一次方程(去括号),已知x=2是关于x的方程(2m-1)x=8的解,则m的值是--------------.方程2(12+x)=4的解是-----------.(1)3x-2(1-2x)=5;(2)3(2x-5)-(4x+2)=1;(3)5(x+2)=1+2(3x-2);(4) 已知关于x的方程X^2+(2k+1)x+k^2-2=0的两个实数根的平方和为11,求k的值. 不等式移项变号法则 注是不等号 解用一元一次方程 去括号 求证:关于X的方程X的平方+(2K+1)X+2K-1=0有两个不相等的实数根 这是不等式的什么变号法则? 用括号解一元一次方程! 求证:关于x的方程x的平方+(2k+1)+k-1=0有两个不相等的实数根 不等式变号法则还是没搞清楚不等式什么时候要变号.谁能跟我说说清楚?2X-4 用去括号法和去分母法解一元一次方程四道题带过程 若关于x的方程x平方-(2k-1)x+k平方=0有两个不相等的两个实数根,求k的最大整数值若关于x的方程x平方-(2k-1)x+k平方=0有两个不相等的两个实数根,求k的最大整数值 什么是解方程,解不等式的移项法则 去括号+去分母的一元一次方程~快·····今天(2007.12.08)帮我找道题目者,加赏分50~ 求证 关于x的方程x的平方+(2k+1)x+k-1=0有两个不相等的实数根 不等式怎么变号? 用去分母法解一元一次方程 :(1)2y-1/6=5y+1/8 ,(2) x-1/2+1=x-1 ,(3) 1+3-x/2=x+4/3-2 ,(4)1/2(x+1)-x+1/6=1 ,(5)1/3x+1/2=2/3 (6)3(2x+1)/4-1=2(2x-1)/3 (7)4(2y+3)+5(y-2)=8(1-y) (8)如果2x^5a-4-3=0是关于x的一元一次方程,那么a=( 已知关于x的方程¼x²-(m-2)x+m²=0 是否存在正数m使方程的两个实数根的平方和为224 一元一次方程的移项怎么移?移项我总是弄不懂 那个数怎么移我也不知道 移过去是加还是减,乘还是除,我就是搞不懂 谁来教教我 普通的移项我会移,但是稍复杂的我就不会移了,像有理数那一 一元一次方程 去括号 是否存在实数m,使关于x的方程4x的平方-4mx+m+2=0的两个实数根的平方和最小?若存在求出m的值及这个最小值 一元一次方程移项怎么移 去括号解一元一次方程 方程3×y的平方+4x+3K=0的两个根的平方和等于7,求k的值 解一元一次方程移项怎么移明确着点 一道解一元一次方程的题(去括号的)!2(10-0.5y)=-(1.5y+2)把去括号的过程写下来 已知方程2x的平方+4X+M等于0的两根平方和是34,求m的值 一元一次方程怎么移项?老是移不来 一元一次方程 去括号与去分母 要有格式!三分之5y+4 + 4分之y-1 = 2 -12分之5y-53分之x+6 - 5=4x3分之7x-1 — 2分之5x+1 = 1格式是:去分母,得去括号,得移项,得合并同类项,得系数化为1,得 满足方程{2x=y=k,-4x-3y=k+8 的x、y和等于3k,则k=满足方程{2x+y=k,-4x-3y=k+8 的x、y和等于3k,则k= 初一数学整式的加减去括号和化简有什么区别 关于解一元一次方程——去括号和去分母的题七年级二班买了35张电影票,公益共用了125元,其中甲种每张8元,乙种每张6元,问甲、乙两种票各买了多少张? 设( )x张,则乙种票买(35- 已知ab互为相反数,cd互为倒数,x的绝对值为5,则x的平方+(a+b)的2010次方+(-cd)的2011次方的值为? 七年级数学整式的加减与什么什么无关的题 求解一元一次方程去括号题两道~加讲解,10(x+30)=15x,2.8(x+24)=3(x-24)去括号得 移项得 合并同类项得 系数化为一得还有啊 我想问问 怎么系数化为一呢?ps 讲一下系数化为一最好列几道题 以便明白 解方程(采用移项法)谢谢 1.(有些东西打不出来用文字代替了,在草稿本上把式子写下来容易看懂)试说明多项式a的三次方b的三次方 + b的二次方- 1/2a的二次方b + 0.5a的二次方b - 2a的三次方b的三次方 + b的二次方 + a的 一元一次方程带括号的习题 利用移项法解一元一次方程, 请写出同时满足一下三个条件的两个整式:①这两个整式的和为3x2+x-1;②它们都是三次多项式;③一个多项式的系数都是正数,另一个多项式系数都是负数 去括号解一元一次方程 不等式x的平方减4x+5大于0 的解集 要过程 移项法比利用等式性质法解方程更为_______,但同时容易出现一个常见的错误是________的问题 第二章 整式的加减单元检测A卷 好好好,如果你给我写出来了,我把我分全给你。 已知关于x的方程x^2-(k-1)x+k=0的两个实数根的平方和等于4求实数K的值 x+4.6=10.9用移项法怎么做 代数 整式的加减 已知方程x²+(2k+1)x+k²-2=0的两实数根的平方和等于11,则k的取值是 带上讲解A.-3或1B.-3C.1D.3 移项利用了什么数学原理? 去括号,并合并同类项.-3(2x的二次方-xy)+4(x的二次方+xy-6)a+[2a-2-(4-2a)] 已知关于x的方程x²+(2k+1)+k²=0的两个实数根的平方和是7,求k的值 解一元一次方程,合并同类项与移项.解方程(1)-3x=3-x/9 (2)6y-3/4=4y+5/4 (3)3x+4=x/3 (4)-2x=2-x/6(5)2.5y+10y=6.5y-3 (6)1/2x-1=2/3x+3/2 (7)0.5x-0.7=6.5-1.3x要有移项,合并同类项,系数化为1这些过程 整式的加减以去括号和合并同类项为基础化简后的结果不含什么什么,它的依据是加法
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn