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

?

基于CGI的嵌入式W eb服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

2016-11-09 07:32:11雷娟娟陳福才
電子設(shè)計(jì)工程 2016年19期
關(guān)鍵詞:環(huán)境變量表單調(diào)用

朱 錦,雷娟娟,陳福才

(國(guó)家數(shù)字交換系統(tǒng)工程技術(shù)研究中心 河南 鄭州450000)

基于CGI的嵌入式W eb服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

朱 錦,雷娟娟,陳福才

(國(guó)家數(shù)字交換系統(tǒng)工程技術(shù)研究中心 河南 鄭州450000)

為了在資源有限的嵌入式設(shè)備上能夠有效地實(shí)現(xiàn)動(dòng)態(tài)Web,本文比較了幾種Web服務(wù)器的優(yōu)缺點(diǎn),選擇了性能優(yōu)異的Boa作為嵌入式Web服務(wù)器,闡述了CGI技術(shù)的相關(guān)原理以及SQLite數(shù)據(jù)庫的定義。本文所設(shè)計(jì)的查詢數(shù)據(jù)系統(tǒng)以嵌入式Linux操作系統(tǒng)為軟件平臺(tái),以PowerPC8548為硬件平臺(tái),利用HTML表單和CGI技術(shù)完成了對(duì)后端數(shù)據(jù)庫SQLite的數(shù)據(jù)信息查詢,實(shí)現(xiàn)Web客戶端與Web服務(wù)器的動(dòng)態(tài)交互。

嵌入式Web服務(wù)器;Boa;CGI;SQLite

隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展和嵌入式Web應(yīng)用越來越廣泛,需要接入Internet網(wǎng)的信息化產(chǎn)品越來越多。在嵌入式系統(tǒng)中可以通過Web頁面進(jìn)行遠(yuǎn)程訪問和控制,查看或修改遠(yuǎn)程設(shè)備的數(shù)據(jù)信息。為了滿足嵌入式設(shè)備接入互聯(lián)網(wǎng)的需求以及實(shí)現(xiàn)嵌入式Web服務(wù)器與Web頁面的動(dòng)態(tài)交互[1],很多系統(tǒng)引入了CGI技術(shù)[2]。

CGI是實(shí)現(xiàn)動(dòng)態(tài)Web的基礎(chǔ)。文中對(duì)嵌入式Web服務(wù)器Boa以及CGI技術(shù)的相關(guān)原理進(jìn)行了研究,利用CGI技術(shù)實(shí)現(xiàn)Boa服務(wù)器和Web頁面的動(dòng)態(tài)交互,實(shí)驗(yàn)結(jié)果成功證明了其可行性。

1 嵌入式W eb服務(wù)器

嵌入式Web服務(wù)器(Embedded Web Server,EWS)指的是在現(xiàn)場(chǎng)測(cè)試和控制設(shè)備中嵌入的Web服務(wù)器。EWS是以TCP/IP協(xié)議棧為基礎(chǔ)進(jìn)行設(shè)計(jì)的,在此基礎(chǔ)上要構(gòu)建HTTP、TCP以及UDP等協(xié)議。由于嵌入式設(shè)備的處理器能力有限,存儲(chǔ)容量也小得多,傳統(tǒng)的Web服務(wù)器很難運(yùn)行在嵌入式設(shè)備上,必須考慮使用體積更小、功能相對(duì)簡(jiǎn)單、消耗資源更少的簡(jiǎn)單Web服務(wù)器來解決這一問題,嵌入式Web服務(wù)器便應(yīng)運(yùn)而生。

衡量嵌入式Web服務(wù)器的性能取決于以下幾個(gè)方面[3]:1)可移植性,即能方便地在多種目標(biāo)平臺(tái)上進(jìn)行移植;2)可裁減性,使用戶可以根據(jù)實(shí)際需求,裁減掉那些冗余的功能,降低嵌入式Web服務(wù)器對(duì)資源的需求;3)可交互性,即服務(wù)器與目標(biāo)系統(tǒng)間的交互性越好,說明它的使用越方便,對(duì)目標(biāo)系統(tǒng)的控制越靈活。

常見的嵌入式Web服務(wù)器有httpd、apache、goAhead和Boa等。httpd是最簡(jiǎn)單的一種Web服務(wù)器,它的功能最弱,不支持認(rèn)證,不支持CGI,僅能提供一些靜態(tài)頁面;apache是重量級(jí)服務(wù)器,成熟穩(wěn)定,但體積較大,適合復(fù)雜的嵌入式應(yīng)用,在高負(fù)載的情況下,沒有單進(jìn)程的服務(wù)器性能高;goAhead和Boa都支持CGI,但是goAhead是個(gè)比較專用的Web服務(wù)器,大部分功能都在服務(wù)它自己提供的goform功能和ASP功能,而Boa是一個(gè)非常小巧且高效的嵌入式服務(wù)器,開放源代碼,可執(zhí)行代碼大約只有60 kB,它運(yùn)行在Linux或Unix下,支持CGI和HTTP,響應(yīng)請(qǐng)求的速度快,最多可以同時(shí)響應(yīng)50個(gè)請(qǐng)求。Boa的設(shè)計(jì)目標(biāo)是速度和安全,非常適合于嵌入式系統(tǒng)。為了實(shí)現(xiàn)動(dòng)態(tài)Web技術(shù),本文也正是采用了Boa。

2 CGI原理

2.1CGI工作原理

用戶通過Web瀏覽器進(jìn)行URL訪問,形成的HTTP請(qǐng)求通過瀏覽器發(fā)送到Web服務(wù)器,Web服務(wù)器守護(hù)進(jìn)程接收到該請(qǐng)求后會(huì)創(chuàng)建一個(gè)CGI的子進(jìn)程,該子進(jìn)程將CGI請(qǐng)求的有關(guān)數(shù)據(jù)設(shè)置成環(huán)境變量,然后根據(jù)鏈接啟動(dòng)指定的CGI處理程序從環(huán)境變量中讀取數(shù)據(jù),經(jīng)過處理后,最后使用STDOUT輸出HTML形式的結(jié)果文件,經(jīng)Web服務(wù)器送回瀏覽器顯示給用戶。

2.2CGI的傳送數(shù)據(jù)方式

CGI傳送方式[4]是使用HTML表單向Web服務(wù)器發(fā)送信息。基本語法如下:

其中method屬性定義了程序如何將數(shù)據(jù)傳送到Web服務(wù)器,傳送方式有兩種:

1)GET方法

使用GET方法時(shí),表單數(shù)據(jù)會(huì)附加在所指向CGI腳本的URL后一起發(fā)送給Web服務(wù)器,Web服務(wù)器將收到的表單數(shù)據(jù)賦予環(huán)境變量QUERY-STRING,CGI程序?qū)⒁宰址男问綇沫h(huán)境變量QUERY_STRING中獲取數(shù)據(jù)。

2)POST方法

POST方法通過使用標(biāo)準(zhǔn)輸入(STDIN)將表單數(shù)據(jù)傳送給Web服務(wù)器。將數(shù)據(jù)的長(zhǎng)度存放在環(huán)境變量CONTENT_ LENGTH中,CGI程序先從CONTENT_LENGTH中讀出數(shù)據(jù)的長(zhǎng)度,然后再從標(biāo)準(zhǔn)輸入STDIN中獲取數(shù)據(jù)。

2.3CGI環(huán)境變量

CGI環(huán)境變量[5]是CGI的重要內(nèi)容,所有的信息都是通過環(huán)境變量和CGI聯(lián)系,服務(wù)器與CGI程序交換信息的工作方式也是通過環(huán)境變量來實(shí)現(xiàn)的。當(dāng)通過瀏覽器訪問Web服務(wù)器時(shí),利用環(huán)境變量來保存所發(fā)出的請(qǐng)求,CGI程序再訪問這些環(huán)境變量,換句話說,環(huán)境變量是Web服務(wù)器和CGI腳本進(jìn)行數(shù)據(jù)傳遞的橋梁。

2.4CGI的調(diào)用方法

在Web網(wǎng)頁中調(diào)用CGI程序有兩種方法[5]:表單(FORM)和超鏈接(URL)。

1)表單(FORM)調(diào)用方法

當(dāng)Web頁面以表單的方式向Web服務(wù)器提交數(shù)據(jù)時(shí),把CGI程序存放的相對(duì)路徑放在

標(biāo)簽的action屬性中,并把method屬性設(shè)置為GET或POST提交方式,其調(diào)用形式如下:

2)超鏈接(URL)調(diào)用方法

當(dāng)Web頁面以超鏈接的形式調(diào)用CGI程序時(shí),將CGI處理程序存放的相對(duì)路徑放在標(biāo)簽的href屬性中,作為鏈接對(duì)象。默認(rèn)GET提交方式,其調(diào)用形式如下:

由于這種調(diào)用方法具有一定的局限性,只能靜態(tài)傳遞數(shù)據(jù),所以大多數(shù)情況下更多采用表單 (FORM)調(diào)用的方式。

3 SQLite介紹

SQLite是D.RichardHipp用C語言編寫的開源嵌入式數(shù)據(jù)庫引擎。它是完全獨(dú)立的,不具有外部依賴性。SQLite支持多數(shù)SQL92標(biāo)準(zhǔn),可以運(yùn)行在所有的操作系統(tǒng)上,并且支持大多數(shù)計(jì)算機(jī)語言。它不同于其它大部分的SQL數(shù)據(jù)庫引擎,因?yàn)樗氖滓O(shè)計(jì)目標(biāo)就是盡量的簡(jiǎn)單化,以達(dá)到易于管理、易于使用、易于嵌入到其它的大型程序中、易于維護(hù)和配置的目的。

SQLite的特征[6]如下:零配置、無服務(wù)器、精簡(jiǎn)性、簡(jiǎn)單的訪問、可變長(zhǎng)度的記錄。SQLite不僅小、快,而且簡(jiǎn)單、可靠,對(duì)于嵌入式系統(tǒng),其管理、執(zhí)行、維護(hù)的簡(jiǎn)單化比企業(yè)數(shù)據(jù)庫引擎提供的許多復(fù)雜應(yīng)用更重要,因此SQLite數(shù)據(jù)庫廣受開發(fā)者歡迎。

4 CGI在嵌入式W eb服務(wù)器中的動(dòng)態(tài)測(cè)試

4.1嵌入式W eb服務(wù)器軟件構(gòu)成及工作原理

嵌入式Web服務(wù)器采用Boa服務(wù)器,其系統(tǒng)架構(gòu)如圖1所示。當(dāng)服務(wù)器Boa接收到客戶端的HTTP請(qǐng)求消息后,服務(wù)器對(duì)消息進(jìn)行解析。將解析后得到的各種參數(shù)傳遞給CGI,CGI應(yīng)用程序通過環(huán)境變量讀取從Web服務(wù)器解析到的數(shù)據(jù),并對(duì)客戶端的請(qǐng)求進(jìn)行解釋和處理,然后使用SQL語句來檢索或者更新數(shù)據(jù)庫,最后CGI應(yīng)用程序?qū)⑻幚斫Y(jié)果按照CGI規(guī)范返回給Web服務(wù)器,Web服務(wù)器會(huì)對(duì)CGI應(yīng)用程序的處理結(jié)果進(jìn)行解析,并在此基礎(chǔ)上生成HTTP響應(yīng)信息返回至Web前臺(tái)頁面,呈現(xiàn)給用戶,完成動(dòng)態(tài)交互。

圖1 嵌入式Web服務(wù)器系統(tǒng)架構(gòu)

4.2動(dòng)態(tài)測(cè)試

下面以查詢表信息為例,介紹利用CGI處理程序?qū)崿F(xiàn)系統(tǒng)的表信息查詢驗(yàn)證,其實(shí)現(xiàn)流程圖如圖2所示:

圖2 數(shù)據(jù)查詢流程圖

當(dāng)用戶點(diǎn)擊查詢按鈕時(shí),程序?qū)⑦M(jìn)入Web瀏覽器查詢頁面,在該頁面下,用戶可以查詢系統(tǒng)的表信息。當(dāng)查詢表單提交給Boa服務(wù)器后,CGI程序?qū)⒈徽{(diào)用,程序首先打開用戶信息數(shù)據(jù)庫,判斷管理員的輸入是否合法,若不合法,則瀏覽器刷新當(dāng)前頁面要求重新輸入;若合法,則執(zhí)行SQL語句SELECT查詢數(shù)據(jù)庫。若表單存在的話,則瀏覽器顯示表單信息給用戶;若表單不存在的話,則程序退出。

頁面具體操作:在瀏覽器地址欄輸入嵌入式服務(wù)器的IP地址及端口號(hào):xx.xx.xx.xx:xx,進(jìn)入查詢系統(tǒng)的登陸界面,進(jìn)行身份驗(yàn)證后,可開始數(shù)據(jù)查詢操作,下面以插入一條數(shù)據(jù)記錄項(xiàng)為例:

執(zhí)行插入操作前進(jìn)行查詢數(shù)據(jù)項(xiàng),見圖3:

圖3 操作前數(shù)據(jù)查詢顯示頁面

插入操作完成后,再次進(jìn)行查詢數(shù)據(jù)項(xiàng),結(jié)果見圖4:

圖4 操作后數(shù)據(jù)查詢顯示頁面

5 結(jié)束語

文中基于項(xiàng)目的實(shí)際需求選擇了Boa服務(wù)器,在嵌入式系統(tǒng)中結(jié)合C語言編寫CGI程序,完成了客戶端與嵌入式Web服務(wù)器之間的動(dòng)態(tài)交互,從而通過瀏覽器實(shí)現(xiàn)對(duì)后端數(shù)據(jù)庫SQLite的數(shù)據(jù)信息查詢。這種方案運(yùn)行效率高,通用性強(qiáng),有著廣泛的應(yīng)用前景,為用戶后續(xù)對(duì)嵌入式設(shè)備的遠(yuǎn)程監(jiān)控奠定基礎(chǔ)。

[1]李勇.CGI在嵌入式WEB服務(wù)器中的應(yīng)用和實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(10):110-111.

[2]WANG Zhen-xi,REN Xian-yi.Astudyon CGI ofembedded Webserver[J].International Symposiumon Computer Science and Computational Technology,2008,(1):480-483.

[3]施忠華.基于嵌入式Linux和Sqlite的Web服務(wù)器的研究及應(yīng)用[D].南昌:南昌大學(xué),2012.

[4]王俊,郭書君.嵌入式Web服務(wù)器的實(shí)現(xiàn)及其CGI應(yīng)用[J].電子設(shè)計(jì)工程,2011,19(21):152-154.

[5]王寶忠,馬成.基于CGI技術(shù)的嵌入式動(dòng)態(tài)Web的研究與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012,20(18):162-163.

[6]楊洋.SQLite數(shù)據(jù)庫在嵌入式系統(tǒng)中的應(yīng)用實(shí)踐[J].柳鋼科技,2013,(5):41-43.

Design and implementation of embedded W eb server based on CGI

ZHU Jin,LEIJuan-juan,CHEN Fu-cai
(National Digital Switching System Engineering&Technological Research Center,Zhengzhou 450000,China)

In order to achieve the purpose of dynamic Webeffectively in the limited resources of embedded devices,by comparing the advantagesand disadvantagesof severalWeb servers,this paperselects the excellent Boa as an embedded Web server,and illustratestheoperationalprincipleofCGItechnology andSQLite database.The design of data query system in this paper takesembedded Linux operating system as software platform,and takes PowerPC8548 as the hardware platform,realizes data information query of the back-end SQLite database by usingHTML forms and CGI technology,and complete dynamicinteractivitybetweentheWeb clientandtheWeb server.

embedded Web server;Boa;CGI;SQLite

TN915

A

1674-6236(2016)19-0191-03

2015-10-08稿件編號(hào):201510017

朱 錦(1991—),男,江蘇高郵人,碩士。研究方向:信息通信網(wǎng)技術(shù)。

猜你喜歡
環(huán)境變量表單調(diào)用
電子表單系統(tǒng)應(yīng)用分析
華東科技(2021年9期)2021-09-23 02:15:24
從桌面右鍵菜單調(diào)用環(huán)境變量選項(xiàng)
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
徹底弄懂Windows 10環(huán)境變量
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
淺談網(wǎng)頁制作中表單的教學(xué)
基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
基于三階段DEA—Malmquist模型的中國(guó)省域城鎮(zhèn)化效率測(cè)度及其收斂分析
基于三階段DEA—Malmquist模型的中國(guó)省域城鎮(zhèn)化效率測(cè)度及其收斂分析
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
抚宁县| 潼关县| 称多县| 贡觉县| 通城县| 舟山市| 轮台县| 西充县| 新闻| 苏州市| 都江堰市| 准格尔旗| 孝昌县| 开江县| 杂多县| 太谷县| 突泉县| 丰台区| 乐都县| 喀什市| 吉隆县| 陇川县| 南宁市| 长葛市| 金华市| 故城县| 洛扎县| 武汉市| 东乡| 姚安县| 墨脱县| 昂仁县| 巢湖市| 五指山市| 蚌埠市| 萨迦县| 兰坪| 甘泉县| 治多县| 凤庆县| 营山县|