3.2.2 客户端工作过程
该系统使用的是B/S模式,对客户端几乎没有特别要求。客户端只要基于普通Windows视窗系统,安装IE或Netscape即可。换句话说,任何一台上网的计算机,都可能成为客户端。
客户端的工作过程如下:通过Internet/Intranet网络访问监控中心的主页,根据需要输入用户名和密码,检验成功则进入Web Server系统的监控界面,点击相应的设备按钮可以获得该设备的运行状态并可以对设备的参数进行设置。
3.2.3 服务器端程序的设计
(1)服务器模式
为了进行服务器端程序的设计,首先要确定服务器的工作模型。我们知道,Linux系统网络服务器主要分为两种:循环服务器(Iterative Server)和并发服务器(ConcurrentServer)。循环服务器在同一时刻只能处理一个客户机请求,而并发服务器在同一时刻可以处理多个客户机请求。TCP套接字大多采用并发服务器提供服务。TCP并发服务器有多种实现方法:
·服务器对每个接收到的客户连接都创建一个新的子进程来处理客户请求;
·服务器预先创建多个子进程,由这些子进程处理客户机的请求。这种方式称为“预创建(prefork)”服务器;
·服务器用函数select实现对多个客户机连接的多路复用;
·由超级服务器(Inetd)激活的服务器。
其中,一个子进程对应一个客户机的服务器模型很简单,父进程完成接收连接和创建子进程的任务,子进程处理客户机的具体请求,每个子进程的处理过程完全独立。
这种服务器可以同时处理的客户机数目受到系统所允许的最大子进程数目的限制。这种服务器的缺点是,为每一个客户创建一个子进程的开销比较大。但如果我们能考虑到实际情况,并加以适当的变化,就会发现,它很适合我们的系统。首先,该系统是一个监控系统,决定了不会有过多客户同时发出监控命令,所以无须担心出现系统资源被耗尽的情况;其次,客户一旦进行监控,一般会持续较长时间,这种创建子进程的开销对服务器效率影响不大;最后,如果系统在Internet上运行,可能会有许多外来的好奇者想进入,为了减少开销,在系统设计中,并不是一旦建立连接就创建子进程,而是当口令通过后并向系统发出ASP请求才建立子进程。
(2)程序设计
根据我们的方案,服务器所需做的工作是:通过串口对设备进行数据的收发;对数据进行处理;将处理的数据交给Web Server子进程;子进程将数据显示到Web页下传给客户,并接收客户的参数设置命令,将参数设置上传到远程设备。
服务器程序结构如图4所示,父进程首先创建一个子进程专门处理数据,然后再根据用户的请求创建相对应的子进程。用户子进程与串口数据处理子进程之间采用进程间通信来实现数据交换。
服务器启动之后的第一件事,就是创建专用子进程来收发数据。服务器任何时刻都在监听用户请求。若用户发出监控请求,而且通过了密码校验,服务器就会产生一个子进程来处理该用户的请求:发送数据,接收设置等。
4 结束语
身处信息社会,人们已经能够利用网络资源快捷方便地获得信息,并能利用网络资源进行各种设备的远程监控。本文提出的基于嵌入式Linux的远程监控系统的方案已在小型局域网中得到实现。该系统在工业现场、远程诊断、信息家电中有着很好的应用前景。