用VB编写WindowsCGI应用程序

新世嘉车

新世嘉车

2016-02-19 12:56

今天图老师小编要向大家分享个用VB编写WindowsCGI应用程序教程,过程简单易学,相信聪明的你一定能轻松get!
一、WindowsCGI
  ----通用网关接口CGI是服务器与应用程序之间的接口,在编写HTML文件时可结合其他程序语言使客户通过浏览器将数据输入到文件里,经服务器处理后转送给客户或记录在服务器的数据库中。任何一种程序设计语言写的程序,若可在服务器主机上运行并可用CGI接口来传递数据,就可作为CGI应用程序,这种语言可被称为CGI程序语言或脚本语言(scriptinglanguage);目前最受欢迎的CGI程序语言有:C/C ,shellScript,Perl,和VisualBasic,此外还有Fortran,TCL,AppleScript等。
  ----CGI接口因平台不同而不同。Windows平台的CGI称为WindowsCGI。美国的BobDenny从需要实现CGI接口来处理Windows应用方面的要求入手设计实现了WindowsCGI,开发出目前在Windows95和WindowsNT平台上很受欢迎的HTTP服务器:WebSite;BobDenny用VB4.0写的WindowsCGI接口程序名为CGI32.BAS,是一个给用户在Windows95或WindowsNT环境下用VisualBasic来开发WindowsCGI应用程序的接口,主要处理WWW服务器(如:WebSite,Netscape,Alibaba等)与CGI程序之间的数据交换:在VB中通过WindowsCGI接口处理HTML的表单传过来的变量,并把处理结果通过WindowsHTTPServer再传给客户机上的浏览器,从而达到信息交互目的。
  
  ----由于Windows没有命令解释器(commandinterpreter),所以WindowsCGI程序都必需编译为可执行文件在服务器上运行。
  
  ----除VB外,可以在Windows上用来写WindowsCGI程序的语言还很多,例如:Delphi,Perl,VC 等;目前VisualBasic得以流行,是因为该语言不仅在Windows用户中很普及,而且最早被发表为撰写WindowsCGI程序的标准,同时该语言支持许多Windows环境:例如OLE,DDE,Sockets,ODBC等;此外,VB应用程序可在不需要窗体(windowsforms)而只在模组(modules)的环境下开发,十分符合CGI应用程序的需要。
  
  ----以前,多用VB4.0(32位版)开发WindowsCGI应用程序,由于VB5.0的推出,用VB5.0写WindowsCGI应用程序更为简单、方便和有力。
  
  ----要在Windows95/NT的PC微机上运行WindowsCGI程序必须在PC机上安装一个支持WindowsCGI的服务器,例如WebSite;WebSite是一个基于Windows95/WindowsNT运行的32位、多线程的服务器,功能强大、使用方便,完全满足小单位或个人建立PC服务器的要求。有关它的最新信息和免费试用版可从http://website.ora.com/获取。
  
  二、用VB5.0编制WindowsCGI应用程序的具体步骤
  ----Denny用VisualBasic4.0(32位版)开发了一个WindowsCGI库模块:CGI32.BAS,它与WebSite软件一道提供使用(安装WebSite时CGI32.BAS被放在c:websitelib下,很容易找到);CGI32.BAS为Windows95/WindowsNT下用VB4.0开发WindowsCGI程序设计提供了极大的方便;目前微软推出了功能更强大的VisualBasic5.0,本文通过例子介绍在CGI32.BAS下用VB5.0编写WindowsCGI应用程序的方法,通过这些例子可以看出用VB5.0来编写WindowsCGI应用程序比VB4.0更为有力和简单。
  ----下面首先介绍一个最简单的WindowsCGI程序以及将它编译为可执行文件放于服务器应用的方法,这些方法是一般的,对VB编写的WindowsCGI程序普遍实用。程序由两个子过程CGI_Main()和Inter_Main()构成,子过程CGI_Main()功能是在服务器端产生一个HTML页面并送回Web客户,这个页面显示了两行汉字和服务器时间,是WindowsCGI程序的入口,是必不可少的;另一个子过程Inter_Main()提示该程序必须在Web服务器中运行。源程序代码如下:
  
  SubCGI_Main()
  Send("Content-type:text/html")
  Send("")
  Send("HTMLHEADTITLE
  欢迎/TITLE/HEAD")
  Send("BODY")
  Send("H1ALIGN=CENTER
  FONTCOLOR='#FF0080'
  欢迎您访问/FONT/H1")
  Send("H1ALIGN=CENTER
  FONTCOLOR='#FF0080'
  贵州大学计算机软件与理论研究所
  /FONT/H1")
  Send("HRWIDTH='100'")
  Send("PH2FONTCOLOR='#000000'
  您访问的时间是:"&Now)
  Send("我们的WWW网址:
  AHREF='http://www.gzu.edu.cn/
  ~lixiang/index.html'
  www.gzu.edu.cn/~lixiang/index.html/A")
  Send("我们的Email地址:
  AHREF='mailto:lixiang@gzu.edu.cn'
  lixiang@gzu.edu.cn")
  Send("/H2/BODY/HTML")
  EndSub
  SubInter_Main()
  MsgBox"这是CGI程序,需在Web服务器上运行."
  EndSub
  
  ----现在,介绍在VB5.0集成开发环境里编辑、编译、调试该WindowsCGI应用程序并生成可执行文件放入服务器中在网上使用的具体步骤:
  
  ----1建立项目(Project):运行VB5.0,在主菜单选“文件(F)|新建工程(N)”,在出现的“新建工程”对话框中选“标准EXE”;由于WindowsCGI应用程序不需要自己的窗体,故在用VB5.0建立项目文件(Project)的上述步骤后,在出现的名为“工程-工程1”的“资源管理器”窗口中用鼠标右击“Form1”将其删除;
  
  ----2添加文件:在主菜单选“工程(P)|添加文件(A)”,在出现的添加文件对话框中选择cgi32.bas所在目录(例如c:websitelib)将其打开加入工程中;
  
  ----3添加模块:在主菜单选“工程(P)|添加模块(M)”,在出现的对话框中将模块(Module1)打开加入;
  
  ----4录入代码:在模块代码窗口中录入上面给出的两个子过程的代码。
  
  ----5保存模块和工程文件:在主菜单中选:“文件(F)|工程另存为(E)”,可对模块(Module1.bas)和工程(工程1.vbp)重新取名(例如:guida.bas和guida.vbp)存盘;
  
  ----6生成可执行文件:在主菜单中选“文件(F)|生成guida.exe(K)”,在出现的对话框里选好存盘目录将guida.exe存盘;
  
  ----7将生成的可执行文件(guida.exe)放入服务器:对WebSite服务器,应放置在子目录WebSitecgi-win里;
  
  ----8在Web客户端运行这个CGI程序:在本机上运行,打开浏览器,在URL栏中连接:http://localhost/cgi-win/guida.exe;在网上的Web客户端,用http://服务器主机/cgi/guida.exe
  
  三、用VB5.0制作一个网上征求意见的WindowsCGI应用程序
  ----下面举一个较复杂实用的WindowsCGI程序,它由4个子过程组成:CGI_Main(),EnterGuest(),ReturnForm()和Inter_Main();它的功能是:服务器向申请连接的Web客户发出一张表单,Web客户在表单里填入有关数据后送回服务器,服务器收到Web客户的数据并将它们写入一个文件中存储起来,同时向Web客户发送一个收条。这个WindowsCGI应用程序的工作流程如下:一当Web客户要求CGI连接,服务器运行该CGI程序,首先执行CGI_Main()过程,CGI_Main()过程调用ReturnForm()向Web客户送出一个表单,如果Web客户填了意见表,并按键寄回服务器(此时过程CGI_Main()中CGI_RequestMethod="POST"成立)则由CGI_Main()过程调用EnterGuest()获取客户发来的数据并将其放入文件guestbk.csv中,同时向Web客户返回一个信息回条表示客户表单已收到。
  ----由于编译使用这个CGI程序的做法与上面完全相同,故下面仅给源程序代码:
  
  OptionExplicit
  ConstBOOK_FILE="guestbk.csv"'存放客户
  数据的文件,自动生成,可用Excel97调阅
  DeclareSubSleepLib"kernel32"
  (ByValdwMillisecondsAsLong)
  SubCGI_Main()
  IfCGI_RequestMethod="POST"Then
  EnterGuest
  Beep
  Else
  ReturnForm
  EndIf
  EndSub'
  
  ----一当Web客户要求CGI连接,服务器执行ReturnForm(),送出征求建议的表单:
  SubReturnForm()
  Send"Content-type:text/html"
  Send""
  Send("HTMLHEADTITLE贵州大学
  /TITLE/HEAD")
  Send("BODYH2欢迎您访问贵州
  大学计算机软件与理论研究所WWW站点/H1")
  Send("我们的e-mail是AHREF=""mailto:"
  &CGI_ServerAdmin&_
  """lixiang@gzu.edu.cn:/A")
  Send("HR")
  Send("请填下表,留下您的宝贵建议:")
  Send("FORMACTION="""
  &CGI_ExecutablePath&"""METHOD=""POST""")
  Send("PRE您的姓名:
  INPUTSIZE=25NAME=""name""")
  Send("E-mail地址:
  INPUTSIZE=25NAME=""email""")
  Send("您给我们的建议:TEXTAREACOLS=40
  ROWS=4WRAP=VIRTUALNAME=""comments""")
  Send("/TEXTAREA/PRE")
  Send("请击此处将您的建议送我们:
  INPUTTYPE=""submit""")
  Send("VALUE=""发送您的建议""")
  Send("HR")
  Send("/FORM/BODY/HTML")
  EndSub
  
  '获取客户建议表单数据,将所填数据存入文件guestbk.csv并向客户返回一个信息
  SubEnterGuest()
  DimiLockTriesAsInteger
  DimsDateAsString
  DimsNameAsString
  DimsEmailAsString
  DimsCommentsAsString
  'DimsBrowserAsString
  DimsFirstNameAsString
  DimfnAsInteger
  '提取建议的有关数据:
  sName=GetSmallField("name")
  sEmail=GetSmallField("email")
  sComments=GetSmallField("comments")
  iLockTries=0
  fn=FreeFile
  OnErrorGoTogLockFail
  gRetryLock:
  OpenApp.Path "" BOOK_FILEFor
  AppendLockReadWriteAs#fn
  OnErrorGoTo0
  sDate=Now
  Write#fn,sDate,sName,sEmail,
  sComments,CGI_RemoteAddr
  Close#fn
  sFirstName=Trim$(Left$(sName,
  InStr(sName,"")))
  IfsFirstName""
  ThensFirstName=sFirstName&","
  Send("Content-type:text/html")
  Send("")
  Send("HTMLHEADTITLE谢谢您!
  /TITLE/HEAD")
  Send("您的签名与建议是:PRE")
  Send("日期:"&sDate)
  Send("姓名:"&sName)
  Send("E-Mail:"&sEmail)
  Send("Hostaddress:
  ["&CGI_RemoteAddr&"]")
  Send("建议:/PRE")
  Send(sComments)
  Send("H2谢谢您!/H2")
  Send("/BODY/HTML")
  ExitSub
  gLockFail:
  Sleep(1000)
  iLockTries=iLockTries 1
  ResumegRetryLock
  EndSub
  
  SubInter_Main()
  MsgBox"这是CGI程序,
  需要在Web服务器中运行。",16,"CGI.BAS"
  EndSub->

展开更多 50%)
分享

猜你喜欢

用VB编写WindowsCGI应用程序

编程语言 网络编程
用VB编写WindowsCGI应用程序

编写高级应用程序

编程语言 网络编程
编写高级应用程序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

编写多文档应用程序

C语言教程 C语言函数
编写多文档应用程序

用VB编写抽奖程序

编程语言 网络编程
用VB编写抽奖程序

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用VB编写托盘程序

编程语言 网络编程
用VB编写托盘程序

用MFCODBC编写数据库应用程序

编程语言 网络编程
用MFCODBC编写数据库应用程序

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

convert实现不同单位之间的相互转换

convert实现不同单位之间的相互转换

记录集锁定--多客户环境下VB数据库编程之(4)

记录集锁定--多客户环境下VB数据库编程之(4)
下拉加载更多内容 ↓