NetBox 2.7 使用手册

创建一个 WEB 服务器

NetBox 的一大功能就是内置支持了 HttpServer 和 asp。下面就按步骤建立一个以服务方式运行的 WEB 服务器。

第一步:创建 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/”,哈,结果出来了,不过很不好看:

418 Host Not Found

不管想访问什么,都只会是这个结果。这样的结果显然不能满足要求,所以我们需要改进我们的 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 服务程序,需要 HttpServerHttpServerHostService 三个对象的支持,HttpServer 负责建立服务器并控制服务器的运行状态,HttpServerHost 负责建立主机信息, Service 则负责完成与服务程序相关的操作。


版权所有: 2003- 网络盒子