999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

消防水泵Web服務器的構建與實現

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

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

摘 ?要: 本文構建了消防水泵遠程監測系統的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的一個重要組成部分,一般和腳本、動態頁面、數據處理等聯系在一起,用戶通過客戶端提交數據就要用到表單的功能(采集和提交客戶端輸入的信息)。表單包括輸入文本框,多選框,單選框,按鈕等,

是用來標記表單的表單標記符,表單里的所有內容都應該在這兩個之間,
有兩個重要特性:一個是action,表單數據提交后,它來注明需要執行的CGI應用程序的地址,如果用戶提交了表單,服務器就按照它提供的CGI程序地址來處理表單。第二個是method,它用來規定表單里的數據是GET還是POST發送方式。

本系統總共設計了6個頁面,分別是主頁面,登錄頁面,注冊頁面,歷史數據查詢頁面,在線監控頁面,手動控制頁面。

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

消防水泵遠程監控系統

用戶名:

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

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

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

圖3 ?登錄界面

Fig.3 ?login webpage

2.3 ?CGI程序編寫

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

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

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

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)數據查詢程序設計history.cgi

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

主站蜘蛛池模板: 国产福利在线观看精品| 久久精品国产999大香线焦| 久视频免费精品6| 久热这里只有精品6| 国产无码网站在线观看| 久久亚洲精少妇毛片午夜无码| 日韩一区二区三免费高清 | 视频在线观看一区二区| 精品久久综合1区2区3区激情| 啪啪国产视频| 久久伊人操| 欧美一区精品| 国产成人狂喷潮在线观看2345| 尤物精品视频一区二区三区 | 青青久在线视频免费观看| 亚洲人网站| 九月婷婷亚洲综合在线| 欧美成人午夜影院| 华人在线亚洲欧美精品| 国产在线第二页| 青青国产视频| 欧洲一区二区三区无码| 欧洲欧美人成免费全部视频| 无码国产偷倩在线播放老年人| 91在线激情在线观看| 91精品国产丝袜| 中文字幕亚洲另类天堂| 日韩中文字幕免费在线观看 | 国产亚洲欧美日本一二三本道| 亚洲第一视频网| 在线播放国产一区| 午夜不卡视频| 亚洲国产精品成人久久综合影院 | 亚洲福利视频一区二区| 2020国产免费久久精品99| 在线观看无码av免费不卡网站| 中文字幕av一区二区三区欲色| 五月天婷婷网亚洲综合在线| 国产凹凸视频在线观看| 亚洲熟女中文字幕男人总站| 国模粉嫩小泬视频在线观看| 波多野结衣在线一区二区| 亚洲国产成人综合精品2020| 在线看片中文字幕| 国产精品成人第一区| www.99在线观看| 91口爆吞精国产对白第三集 | 在线亚洲天堂| 无码精品国产dvd在线观看9久| 热思思久久免费视频| 色视频久久| 午夜日韩久久影院| 亚洲午夜国产精品无卡| 亚洲h视频在线| 熟女成人国产精品视频| 国产乱人伦精品一区二区| 亚洲国产欧美国产综合久久| 久久亚洲中文字幕精品一区| 中文字幕第1页在线播| 在线播放精品一区二区啪视频| 国产黄色片在线看| 国产人在线成免费视频| 人妻熟妇日韩AV在线播放| 东京热一区二区三区无码视频| 波多野结衣第一页| 国产白浆在线| 国产午夜人做人免费视频中文| 高清无码不卡视频| 国产成人高清精品免费5388| 日韩高清成人| 久久精品日日躁夜夜躁欧美| 欧美中文字幕一区| 色悠久久综合| 婷婷色在线视频| 亚洲无码精彩视频在线观看| 91久久夜色精品| 欧美伦理一区| 91在线播放国产| 亚洲美女久久| 日韩乱码免费一区二区三区| 欧美日韩福利| 国产精品亚洲片在线va|