基于HTTP协议的客户/服务器模式的信息交换分4个过程,建立连接、发送请求信息、发送响应信息、关闭连接。Web服务器运行时,一直监听TCP 80端口(WWW的缺省端口),如接收到连接就将Web文本发送给客户机。
虽然有许多可用的开源Web服务器实现方法,如THHPD、GOAHEAD、BOA等,但大多数开源的Web服务器因过于庞大而不便于移植。将 Web服务器嵌入到一个独立设备或应用中时,该Web服务器的实现应该尽量简单。LibHTTPD正是这样的一个开源的Web服务器软件[5]。
使用LibHTTPD提供的访问内容既可以是静态的网页,也可以是调用C函数动态产生的。LibHTTPD提供了许多友好的程序接口,用户可以很方便地将自己的Web内容加入到程序当中。
图3的代码是程序的主体,先完成Web Server的初始化,然后在循环体内对Web的连接请求进行处理。当调用httpdProcessRequest()函数时,程序将对客户端的请求内容进行识别,确定Web服务器内是否有所需的内容,并采取相应的操作将被请求的内容发送到客户端。
图3 Httpdmain()线程
3、具体方法
首先在程序中创建Httpdmain()线程,这就将Web服务器程序嵌入了系统中。其他主机通过浏览器可以浏览该Web服务器所提供的演示内容。只要在浏览器的地址栏输入Web服务器的IP地址后,得到一个设置选项的页面,设置相应的参数控制整个程序(还可以通过添加相关的程序进行身份认证)。
由于需要使用的配置参数较少,本系统的软件的目标代码大小一般在2~3 MByte,而本系统选用的Flash Memory是Intel Flash芯片E28F320J3,其内部分为32个Blocks,总共4 MB空间,每个Block128 K。所以将Flash的最后一个Block作为系统配置参数的存放区域,系统每次启动后都从该Block中读出参数的配置信息,并按此参数运行。利用 Web server实现对系统的设置,设置之后的配置信息需回写该Block,以便下次启动时按新的参数配置运行。对Flash的最后一个Block读写时采用一个结构体来管理系统配置参数,系统设计时将可能用到的参数均提取出来置于该结构,以方便以后功能扩展,该结构定义如图4所示。
配置参数结构体
图4 配置参数结构体
参数配置时的具体执行步骤:
(1)PC、WLAN AP和视频终端三者组成如图5的网络拓扑,把PC和WLAN AP按照视频终端中预先写入的内网服务器IP配置成一个可以通信的局域网;