亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

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

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

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

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

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

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

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

        Fig.1 ?Web program process

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

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

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

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

        2.1 ?CGI工作原理

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

        圖2 ?CGI工作原理

        Fig.2 ?CGI working principle

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

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

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

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

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

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

        CGI 外部程序根據(jù)CGI規(guī)范讀取服務(wù)器發(fā)送來(lái)的各種信息,并對(duì)處理客戶端的請(qǐng)求,例如,消費(fèi)水泵運(yùn)行時(shí)發(fā)送的數(shù)據(jù)或者調(diào)取數(shù)據(jù)庫(kù)的信息,最后將執(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可知,客戶端提交信息是通過(guò)HTML的表單完成的,表單為用戶提供交互的平臺(tái),當(dāng)用戶鍵入信息時(shí),這些信息則會(huì)組成表單的數(shù)據(jù)集,數(shù)據(jù)集作為HTTP請(qǐng)求消息的一部分傳輸給Web服務(wù)器。提交表單的方法通常有兩種:GET和POST,不同的請(qǐng)求方式,所用的環(huán)境變量也不同,本文不作詳細(xì)說(shuō)明。

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

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

        、

        表單等。

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

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

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

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

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

        用戶名:

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

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

        < input type = "submit " value= "注冊(cè)">

        圖3 ?登錄界面

        Fig.3 ?login webpage

        2.3 ?CGI程序編寫(xiě)

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

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

        登錄的響應(yīng)程序?yàn)閣ww/cgi-bin/login.cgi,在登錄界面上輸入用戶名和密碼后,CGI首先分析HTML表單提交的信息,然后進(jìn)行匹配和判斷用戶名和密碼是否一致,判斷結(jié)束后再返回頁(yè)面結(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("

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

        printf("\n");

        printf("\n");

        fflush(stdout);

        }

        else

        {

        Printf("%s",p1);

        fflush();

        }

        fflush(stdout);

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

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

        亚欧免费无码AⅤ在线观看| 精品无码人妻一区二区三区不卡| 亚洲中文字幕无码久久2020| 国产桃色在线成免费视频| 亚洲国产精品二区三区| 草逼短视频免费看m3u8| 激情内射日本一区二区三区| 亚洲欧美成人a∨| 国产日产久久福利精品一区| 中文字幕亚洲精品在线免费| 国产精品人妻一区二区三区四| 国产mv在线天堂mv免费观看| 免费视频成人 国产精品网站 | 亚洲av熟女传媒国产一区二区| 亚洲αv在线精品糸列| 日韩亚洲av无码一区二区不卡| 男女主共患难日久生情的古言| 国产不卡视频一区二区在线观看| 日本在线一区二区免费| 亚洲国产精品成人精品无码区在线| 欧美疯狂做受xxxx高潮小说| 在线av野外国语对白| 一本色道久久99一综合| 亚洲午夜无码AV不卡| 青青草好吊色在线视频| 日本真人边吃奶边做爽电影| 国产高潮国产高潮久久久| 97超级碰碰碰久久久观看| 亚洲第一页视频在线观看| 97碰碰碰人妻无码视频| 久久精品无码鲁网中文电影| 中文字幕精品人妻av在线| 亚洲精品中文字幕一区二区| 男人靠女人免费视频网站| 91短视频在线观看免费| 日韩精品一区二区三区av| 国产爆乳无码一区二区麻豆| a级黑人大硬长爽猛出猛进 | 99久久亚洲精品加勒比| 久久午夜av一区二区三区| 婷婷午夜天|