翟娟,潘往麗,羅輝輝,郭楷



摘 ?要: 本文構建了消防水泵遠程監測系統的WEB服務器,闡述了Web服務器的工作原理及流程,CGI交互程序的設計以及HTML表單的設計,主要對消防水泵運行數據的實時顯示,歷史查詢與遠程手動控制等功能,并將CGI交互程序與數據庫進行連接,實現了動態監控。
關鍵詞: Web服務器;CGI;HTML表單
中圖分類號: TP311 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.12.024
本文著錄格式:翟娟,潘往麗,羅輝輝,等. 消防水泵Web服務器的構建與實現[J]. 軟件,2019,40(12):106109
Construction and Implementation of Fire Pump Web Server
ZHAI Juan, PAN Wang-li, LUO Hui-hui, GUO Kai
(Guangling college, Yangzhou University, Yangzhou, Jiangsu 225000, China)
【Abstract】: This paper constructs the Web server of the fire pump remote monitoring system, expounds the working principle and process of the Web server, the design of CGI interactive program and HTML form. The main functions of the system are real-time display of operation data of fire pump, historical inquiry and remote manual control. Finally, the CGI interactive program is connected with the database to realize dynamic monitoring.
【Key words】: Webserver; CGI; HTML
0 ?引言
近年來,我國火災發生的新聞逐漸增多,導致國家財產損失嚴重,人員傷害也逐年加大。把各個城市建筑內的消防系統(特別是消防水泵)的巡檢檢測工作做好,提高我國各種建筑物抗御火災的能力,是當前消防領域最重要的任務,也是一個新的挑戰,因此本文研究了消防水泵遠程監控系統。
1 ?嵌入式Web服務器程序流程
本文的采用的是B/S(Browser/Server)結構的服務器,這種服務器簡單來說就是瀏覽器和服務器架構,可以達到監控消防水泵的運行狀況的目的。B/S服務器的工作流程如圖1,先初始化,創立和綁定套接字,建立TCP監聽80端口(默認端口),用戶從瀏覽器向服務器傳輸HTTP請求,并羅列相應
圖1 ?嵌入式Web程序流程圖
Fig.1 ?Web program process
的服務事件,等待接收各種反饋信息(某個靜態頁面或CGI應用程序),接收到反饋信息后退出服務,一個循環結束。
2 ?CGI交互程序設計
實現動態頁面的技術有多種,如:JSP,PHP,CGI,ASP等,不過本系統是在嵌入式Linux環境下進行工作,由于CGI自身的一些特有的優點,并且絕大多數服務器都對它支持,使得它在開發嵌入式Web服務器應用程序時成為大家的首選方法,因此本系統也選用CGI技術。
CGI,也叫CGI腳本,是HTTP服務器連接其他程序的樞紐。大部分的CGI程序的功能是處理表單的信息或者查詢數據庫等等,然后把處理的結果反饋給瀏覽器,這樣就使得網頁有了交互的本領。CGI可以通過多種語言編寫,如Perl、Pascal、C、Shell腳本語言等。本系統選擇了C語言編寫,主要是因為Linux系統自帶C編譯器,而本系統所用的環境正是Linux系統;硬件方面的通信必須使用C語言;C語言有編譯速度快、安全性高等特點。
2.1 ?CGI工作原理
CGI公共網關接口,在本系統里是負責連接消防水泵和Web服務器的很重要的橋梁,由CGI標準編寫的外部擴展程序總要用來處理用戶瀏覽器輸入的請求數據,這樣就為用戶瀏覽器和Web服務器之間的數據更新提供了動態交互手段。假如沒有CGI技術,Web服務器只會呈現一些靜態的網頁和圖片,但是有了CGI技術,Web服務器可以調用外部已有的應用程序(電流,電壓,流量等外部應用程序),并將外部程序的數據和Web網頁的靜態文本和圖片等進行組合編程,發送給用戶端瀏覽器。CGI的工作原理圖如圖2所示。
圖2 ?CGI工作原理
Fig.2 ?CGI working principle
CGI程序與Web服務器工作過程:
(1)用戶瀏覽器向WEB服務器發送HTTP請求
WEB服務器發送統一資源定位符URL,(可能是針對服務器端的某個或多個靜態頁面,也有可能是 CGI 外部資源程序),HTTP請求應含有客戶端傳輸給服務器的信息內容。
(2)WEB服務器端處理用戶瀏覽器端的請求
服務器接收到瀏覽器端發出的HTTP請求后,就會對收到的消息解讀分析,比如讀取請求的資源定位符URL、映射到對應的物理文件等。對于服務器端來說,它需要分辨出客戶端發出的請求的是靜態頁面(“.html”“.htm”)還是CGI外部程序(“.cgi”)。如果發出的請求是CGI外部應用程序時,這時候服務器會創建對應的CGI程序進程。并按規范將所需的信息請求傳送給CGI程序進程,后面的事件就由CGI應用進程來管理。
(3)CGI程序處理客戶端請求
CGI 外部程序根據CGI規范讀取服務器發送來的各種信息,并對處理客戶端的請求,例如,消費水泵運行時發送的數據或者調取數據庫的信息,最后將執行的結果按照CGI規范反饋給Web服務器。
(4)WEB服務器將CGI外部程序的處理結果反饋給客戶端
CGI外部應用程序處理的結果反饋給客戶端后,Web服務器解析CGI外部應用程序的處理的結果,然后將生成 HTTP 的響應消息反饋給用戶。
從圖2可知,客戶端提交信息是通過HTML的表單完成的,表單為用戶提供交互的平臺,當用戶鍵入信息時,這些信息則會組成表單的數據集,數據集作為HTTP請求消息的一部分傳輸給Web服務器。提交表單的方法通常有兩種:GET和POST,不同的請求方式,所用的環境變量也不同,本文不作詳細說明。
2.2 ?數據參數HTML表單設計
HTML能標記很多種類的應用組件:文本文檔、郵件、超媒體、數據庫搜索結果、菜單選項等,一般來說HTML文檔包括標題、列表、段落和表格,其中文檔中會有一些基本的標記符,這些標記符一般都成對的出現,例如、
和,另外還有其他標記符,如、
表單等。一般客戶端通過發送HTTP請求調取靜態網頁,而本系統需要遠程查看消防水泵的運行數據或歷史數據等,即用戶需要從瀏覽器向服務器提交任務請求(查看消防水泵運行數據),服務器解析后并反饋給客戶端達到交互目的,這時要用到HTML表單。表單是HTML的一個重要組成部分,一般和腳本、動態頁面、數據處理等聯系在一起,用戶通過客戶端提交數據就要用到表單的功能(采集和提交客戶端輸入的信息)。表單包括輸入文本框,多選框,單選框,按鈕等,
是用來標記表單的表單標記符,表單里的所有內容都應該在這兩個之間,