NetBox 2.7 使用手册 |
NetBox 的一大功能就是内置支持了 HttpServer 和 asp。下面就按步骤建立一个以服务方式运行的 WEB 服务器。
由于 NetBox 提供了 HttpServer 对象,所以建立一个新的 HttpServer 并且启动、停止、退出,自然便是由 HttpServer 对象来实现,main.box 的代码也就比较简单了:
Set Console = Shell.Console Set httpd = CreateObject("NetBox.HttpServer") If httpd.Create("", 80) = 0 Then httpd.Start Console.ReadLine httpd.Stop httpd.Close End If Set httpd = Nothing
在上面的代码中,先创建一个新的 HttpServer,然后在所有的本机地址的 80 端口创建一个服务器,如果创建成功,则启动服务器,等待用户在控制台上输入回车后停止并关闭服务器。
运行这个程序,如果当前系统中未安装其他 Web 服务器,则此程序会显示控制台并等待回车,否则将直接退出。呵,我们的第一个程序都是很拙劣的。没有关系,我们一步一步来。
如果成功运行了程序,便可以用浏览器访问了,由于服务器装在本机,所以打开浏览器,在地址栏输入“http://localhost/”,哈,结果出来了,不过很不好看:
不管想访问什么,都只会是这个结果。这样的结果显然不能满足要求,所以我们需要改进我们的 Web 服务器。
前面我们建立的服务器之所以总是返回禁止访问,原因是没有为服务器建立主机信息。所以我们修改代码,使用 AddHost 方法增加主机信息的部分:
Set Console = Shell.Console Set httpd = CreateObject("NetBox.HttpServer") If httpd.Create("", 80) = 0 Then httpd.AddHost "", "\wwwroot" httpd.Start Console.ReadLine httpd.Stop httpd.Close End If Set httpd = Nothing
在 NetBox 执行目录建立一个子目录 wwwroot,然后复制一些网页进去。我们再来看看效果如何。执行程序并再次访问“http://localhost/”,结果居然还是“403 Forbidden”。再访问 wwwroot 目录中已有的文件,哈哈,出现正确内容了。所以,实际上主机已经建立出来,但是未给主机提供缺省文件名。
为了让主机知道当用户访问目录时向用户返回的文件,需要使用 AddDefault 方法为主机添加缺省文件名,修改代码如下:
Set Console = Shell.Console Set httpd = CreateObject("NetBox.HttpServer") If httpd.Create("", 80) = 0 Then Set host = httpd.AddHost("", "\wwwroot") host.AddDefault "default.htm" httpd.Start Console.ReadLine httpd.Stop httpd.Close End If Set httpd = Nothing
我们再访问“http://localhost/”的时候,会发现不再显示禁止访问,而是开始出现了缺省页面的内容。如果给定的缺省文件不存在,则返回“404 File Not Found”。
上面的步骤建立出来的 Web 服务器,是一个纯静态文件的服务器,是无法执行服务器脚本程序的,为了让我们的 Web 服务器能够理解服务器端脚本程序,需要修改 EnableScript 属性,同时为了让服务器能够使用脚本程序做为缺省文件,还需要再添加一个缺省文件,下面是新修改的代码:
Set Console = Shell.Console Set httpd = CreateObject("NetBox.HttpServer") If httpd.Create("", 80) = 0 Then Set host = httpd.AddHost("", "\wwwroot") host.EnableScript = true host.AddDefault "default.asp" host.AddDefault "default.htm" httpd.Start Console.ReadLine httpd.Stop httpd.Close End If Set httpd = Nothing
接下来,我们就可以在 wwwroot 目录里建立我们的 asp 脚本程序了,建立 test.asp:
<%Response.Write "Hello"%>
NetBox 也支持服务器 box 程序,在 wwwroot 目录中建立 test.box:
Response.Write "Hello"
到目前为止,已经有一个相对完整的 Web 服务器程序了,下面我们需要将这个服务器改写为系统服务程序,可以将其安装成为一个系统服务,更加便于运行维护。改写成为服务程序需要使用 Service 对象。
下面便是一个完整的 Web 服务程序的代码,关于 Service 对象的更多信息请参阅手册相关内容。
Dim httpd Shell.Service.RunService "NBWeb", "NetBox Web Server", "NetBox Http Server Sample" '---------------------- Service Event --------------------- Sub OnServiceStart() Set httpd = CreateObject("NetBox.HttpServer") If httpd.Create("", 80) = 0 Then Set host = httpd.AddHost("", "\wwwroot") host.EnableScript = true host.AddDefault "default.asp" host.AddDefault "default.htm" httpd.Start else Shell.Quit 0 end if End Sub Sub OnServiceStop() httpd.Close End Sub Sub OnServicePause() httpd.Stop End Sub Sub OnServiceResume() httpd.Start End Sub
实现一个完整的 Web 服务程序,需要 HttpServer,HttpServerHost,Service 三个对象的支持,HttpServer 负责建立服务器并控制服务器的运行状态,HttpServerHost 负责建立主机信息, Service 则负责完成与服务程序相关的操作。