国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

消防水泵Web服務(wù)器的構(gòu)建與實現(xiàn)

2019-01-02 09:01翟娟,潘往麗,羅輝輝,郭楷
軟件 2019年12期

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

摘 ?要: 本文構(gòu)建了消防水泵遠(yuǎn)程監(jiān)測系統(tǒng)的WEB服務(wù)器,闡述了Web服務(wù)器的工作原理及流程,CGI交互程序的設(shè)計以及HTML表單的設(shè)計,主要對消防水泵運(yùn)行數(shù)據(jù)的實時顯示,歷史查詢與遠(yuǎn)程手動控制等功能,并將CGI交互程序與數(shù)據(jù)庫進(jìn)行連接,實現(xiàn)了動態(tài)監(jiān)控。

關(guān)鍵詞: Web服務(wù)器;CGI;HTML表單

中圖分類號: TP311 ? ?文獻(xiàn)標(biāo)識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.12.024

本文著錄格式:翟娟,潘往麗,羅輝輝,等. 消防水泵Web服務(wù)器的構(gòu)建與實現(xiàn)[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 ?引言

近年來,我國火災(zāi)發(fā)生的新聞逐漸增多,導(dǎo)致國家財產(chǎn)損失嚴(yán)重,人員傷害也逐年加大。把各個城市建筑內(nèi)的消防系統(tǒng)(特別是消防水泵)的巡檢檢測工作做好,提高我國各種建筑物抗御火災(zāi)的能力,是當(dāng)前消防領(lǐng)域最重要的任務(wù),也是一個新的挑戰(zhàn),因此本文研究了消防水泵遠(yuǎn)程監(jiān)控系統(tǒng)。

1 ?嵌入式Web服務(wù)器程序流程

本文的采用的是B/S(Browser/Server)結(jié)構(gòu)的服務(wù)器,這種服務(wù)器簡單來說就是瀏覽器和服務(wù)器架構(gòu),可以達(dá)到監(jiān)控消防水泵的運(yùn)行狀況的目的。B/S服務(wù)器的工作流程如圖1,先初始化,創(chuàng)立和綁定套接字,建立TCP監(jiān)聽80端口(默認(rèn)端口),用戶從瀏覽器向服務(wù)器傳輸HTTP請求,并羅列相應(yīng)

圖1 ?嵌入式Web程序流程圖

Fig.1 ?Web program process

的服務(wù)事件,等待接收各種反饋信息(某個靜態(tài)頁面或CGI應(yīng)用程序),接收到反饋信息后退出服務(wù),一個循環(huán)結(jié)束。

2 ?CGI交互程序設(shè)計

實現(xiàn)動態(tài)頁面的技術(shù)有多種,如:JSP,PHP,CGI,ASP等,不過本系統(tǒng)是在嵌入式Linux環(huán)境下進(jìn)行工作,由于CGI自身的一些特有的優(yōu)點,并且絕大多數(shù)服務(wù)器都對它支持,使得它在開發(fā)嵌入式Web服務(wù)器應(yīng)用程序時成為大家的首選方法,因此本系統(tǒng)也選用CGI技術(shù)。

CGI,也叫CGI腳本,是HTTP服務(wù)器連接其他程序的樞紐。大部分的CGI程序的功能是處理表單的信息或者查詢數(shù)據(jù)庫等等,然后把處理的結(jié)果反饋給瀏覽器,這樣就使得網(wǎng)頁有了交互的本領(lǐng)。CGI可以通過多種語言編寫,如Perl、Pascal、C、Shell腳本語言等。本系統(tǒng)選擇了C語言編寫,主要是因為Linux系統(tǒng)自帶C編譯器,而本系統(tǒng)所用的環(huán)境正是Linux系統(tǒng);硬件方面的通信必須使用C語言;C語言有編譯速度快、安全性高等特點。

2.1 ?CGI工作原理

CGI公共網(wǎng)關(guān)接口,在本系統(tǒng)里是負(fù)責(zé)連接消防水泵和Web服務(wù)器的很重要的橋梁,由CGI標(biāo)準(zhǔn)編寫的外部擴(kuò)展程序總要用來處理用戶瀏覽器輸入的請求數(shù)據(jù),這樣就為用戶瀏覽器和Web服務(wù)器之間的數(shù)據(jù)更新提供了動態(tài)交互手段。假如沒有CGI技術(shù),Web服務(wù)器只會呈現(xiàn)一些靜態(tài)的網(wǎng)頁和圖片,但是有了CGI技術(shù),Web服務(wù)器可以調(diào)用外部已有的應(yīng)用程序(電流,電壓,流量等外部應(yīng)用程序),并將外部程序的數(shù)據(jù)和Web網(wǎng)頁的靜態(tài)文本和圖片等進(jìn)行組合編程,發(fā)送給用戶端瀏覽器。CGI的工作原理圖如圖2所示。

圖2 ?CGI工作原理

Fig.2 ?CGI working principle

CGI程序與Web服務(wù)器工作過程:

(1)用戶瀏覽器向WEB服務(wù)器發(fā)送HTTP請求

WEB服務(wù)器發(fā)送統(tǒng)一資源定位符URL,(可能是針對服務(wù)器端的某個或多個靜態(tài)頁面,也有可能是 CGI 外部資源程序),HTTP請求應(yīng)含有客戶端傳輸給服務(wù)器的信息內(nèi)容。

(2)WEB服務(wù)器端處理用戶瀏覽器端的請求

服務(wù)器接收到瀏覽器端發(fā)出的HTTP請求后,就會對收到的消息解讀分析,比如讀取請求的資源定位符URL、映射到對應(yīng)的物理文件等。對于服務(wù)器端來說,它需要分辨出客戶端發(fā)出的請求的是靜態(tài)頁面(“.html”“.htm”)還是CGI外部程序(“.cgi”)。如果發(fā)出的請求是CGI外部應(yīng)用程序時,這時候服務(wù)器會創(chuàng)建對應(yīng)的CGI程序進(jìn)程。并按規(guī)范將所需的信息請求傳送給CGI程序進(jìn)程,后面的事件就由CGI應(yīng)用進(jìn)程來管理。

(3)CGI程序處理客戶端請求

CGI 外部程序根據(jù)CGI規(guī)范讀取服務(wù)器發(fā)送來的各種信息,并對處理客戶端的請求,例如,消費(fèi)水泵運(yùn)行時發(fā)送的數(shù)據(jù)或者調(diào)取數(shù)據(jù)庫的信息,最后將執(zhí)行的結(jié)果按照CGI規(guī)范反饋給Web服務(wù)器。

(4)WEB服務(wù)器將CGI外部程序的處理結(jié)果反饋給客戶端

CGI外部應(yīng)用程序處理的結(jié)果反饋給客戶端后,Web服務(wù)器解析CGI外部應(yīng)用程序的處理的結(jié)果,然后將生成 HTTP 的響應(yīng)消息反饋給用戶。

從圖2可知,客戶端提交信息是通過HTML的表單完成的,表單為用戶提供交互的平臺,當(dāng)用戶鍵入信息時,這些信息則會組成表單的數(shù)據(jù)集,數(shù)據(jù)集作為HTTP請求消息的一部分傳輸給Web服務(wù)器。提交表單的方法通常有兩種:GET和POST,不同的請求方式,所用的環(huán)境變量也不同,本文不作詳細(xì)說明。

2.2 ?數(shù)據(jù)參數(shù)HTML表單設(shè)計

HTML能標(biāo)記很多種類的應(yīng)用組件:文本文檔、郵件、超媒體、數(shù)據(jù)庫搜索結(jié)果、菜單選項等,一般來說HTML文檔包括標(biāo)題、列表、段落和表格,其中文檔中會有一些基本的標(biāo)記符,這些標(biāo)記符一般都成對的出現(xiàn),例如、和,另外還有其他標(biāo)記符,如 、

表單等。

一般客戶端通過發(fā)送HTTP請求調(diào)取靜態(tài)網(wǎng)頁,而本系統(tǒng)需要遠(yuǎn)程查看消防水泵的運(yùn)行數(shù)據(jù)或歷史數(shù)據(jù)等,即用戶需要從瀏覽器向服務(wù)器提交任務(wù)請求(查看消防水泵運(yùn)行數(shù)據(jù)),服務(wù)器解析后并反饋給客戶端達(dá)到交互目的,這時要用到HTML表單。表單是HTML的一個重要組成部分,一般和腳本、動態(tài)頁面、數(shù)據(jù)處理等聯(lián)系在一起,用戶通過客戶端提交數(shù)據(jù)就要用到表單的功能(采集和提交客戶端輸入的信息)。表單包括輸入文本框,多選框,單選框,按鈕等,

是用來標(biāo)記表單的表單標(biāo)記符,表單里的所有內(nèi)容都應(yīng)該在這兩個之間,
有兩個重要特性:一個是action,表單數(shù)據(jù)提交后,它來注明需要執(zhí)行的CGI應(yīng)用程序的地址,如果用戶提交了表單,服務(wù)器就按照它提供的CGI程序地址來處理表單。第二個是method,它用來規(guī)定表單里的數(shù)據(jù)是GET還是POST發(fā)送方式。

本系統(tǒng)總共設(shè)計了6個頁面,分別是主頁面,登錄頁面,注冊頁面,歷史數(shù)據(jù)查詢頁面,在線監(jiān)控頁面,手動控制頁面。

以登錄頁面為例,采用POST方法進(jìn)行數(shù)據(jù)發(fā)送,圖3為登錄界面截圖,其他的 HTML 表單設(shè)計與此相同。登錄頁面的主要代碼為:

消防水泵遠(yuǎn)程監(jiān)控系統(tǒng)

用戶名:

密碼:< input type=text name= "password ">

< input type = "submit " value= "登錄" >

< input type = "submit " value= "注冊">

圖3 ?登錄界面

Fig.3 ?login webpage

2.3 ?CGI程序編寫

本文CGI程序包括登錄login.cgi、在線監(jiān)控頁面monitor.cgi、歷史數(shù)據(jù)查詢頁面history.cgi、手動控制頁面control.cgi。

(1)登錄界面程序login.cgi

登錄的響應(yīng)程序為www/cgi-bin/login.cgi,在登錄界面上輸入用戶名和密碼后,CGI首先分析HTML表單提交的信息,然后進(jìn)行匹配和判斷用戶名和密碼是否一致,判斷結(jié)束后再返回頁面結(jié)果,主要代碼如下:

char name, password,p;

if(getenv("CONTENT_LENGTH "))

n=atoi(getenv("CONTENT_length "))

......

Printf("Content-type: text/html\n\n ");

if((strcmp(name, "admin ")!=0|| (strcmp( password, "123456 ")!=0))

{

printf("\n ");

printf("\n ");

printf("

用戶名或密碼不正確,請重試");

printf("\n");

printf("\n");

fflush(stdout);

}

else

{

Printf("%s",p1);

fflush();

}

fflush(stdout);

(2)數(shù)據(jù)查詢程序設(shè)計history.cgi

數(shù)據(jù)查詢程序首先要打開數(shù)據(jù)庫test.db,讀取數(shù)據(jù)庫data中保存的水泵歷史運(yùn)行數(shù)據(jù),并將歷史數(shù)據(jù)保存到某個變量中,最后用fprintf命令向客戶端發(fā)送讀取到的歷史數(shù)據(jù),其主要代碼如下:

周口市| 枝江市| 铜川市| 沙湾县| 资中县| 大丰市| 邯郸市| 商城县| 特克斯县| 马鞍山市| 平利县| 遵化市| 灵石县| 福清市| 遂平县| 白玉县| 莲花县| 石首市| 广昌县| 沂源县| 南靖县| 建阳市| 凌海市| 陕西省| 永城市| 临西县| 乐业县| 高尔夫| 灌阳县| 灵丘县| 桂阳县| 齐齐哈尔市| 综艺| 南城县| 蓝田县| 兴和县| 宣恩县| 潮州市| 济阳县| 龙游县| 财经|