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

        ?

        嵌入式WEB服務(wù)器BOA的應(yīng)用研究

        2011-03-20 02:31:56朱嶸濤徐愛鈞肖榮華
        關(guān)鍵詞:瀏覽器嵌入式客戶端

        朱嶸濤,徐愛鈞,肖榮華

        (1.長江大學(xué)工程技術(shù)學(xué)院信息系,荊州434020;2.長江大學(xué)電信學(xué)院;3.中石油川慶測井公司)

        引 言

        隨著Internet技術(shù)的成熟和嵌入式技術(shù)的不斷發(fā)展,利用網(wǎng)絡(luò)實現(xiàn)遠(yuǎn)程控制已成為一種發(fā)展趨勢。在嵌入式設(shè)備的管理與交互中,基于網(wǎng)絡(luò)方式的應(yīng)用開發(fā)是目前嵌入式系統(tǒng)開發(fā)的主流,這種應(yīng)用程序的結(jié)構(gòu)采用的是B/S結(jié)構(gòu),即在嵌入式設(shè)備上運(yùn)行一個支持腳本或具有CGI功能的WEB服務(wù)器,能夠生成動態(tài)交互頁面。在遠(yuǎn)程監(jiān)控的過程中,通常會產(chǎn)生和處理很多的動態(tài)數(shù)據(jù),而對數(shù)據(jù)的存取一般采取兩種方式:一種是基于文件方式,另一種是基于數(shù)據(jù)庫方式?;谖募绞絹泶嫒?shù)據(jù)的缺點(diǎn)是顯而易見的,而基于數(shù)據(jù)庫方式的SQLite則可以通過事務(wù)進(jìn)行調(diào)度與并發(fā)控制,可有效地對數(shù)據(jù)進(jìn)行存取、查詢等操作,從而提高系統(tǒng)的開發(fā)效率和系統(tǒng)的可移植性。

        1 嵌入式WEB服務(wù)器的軟硬件設(shè)計[1]

        嵌入式WEB服務(wù)器通過交換機(jī)或調(diào)制解調(diào)器與Internet連接,用戶只需通過瀏覽器訪問該遠(yuǎn)程服務(wù)器的IP地址,即可使用該服務(wù)器并實現(xiàn)對設(shè)備的訪問。嵌入式WEB服務(wù)器的工作過程,如圖1所示。

        圖1 嵌入式WEB服務(wù)器的工作過程

        圖2為硬件系統(tǒng)結(jié)構(gòu)框圖。嵌入式WEB服務(wù)器采用S3C2410作為整個系統(tǒng)的處理器。S3C2410是Samsung公司的一款基于ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,主要面向手持設(shè)備以及高性價比、低功耗的應(yīng)用。網(wǎng)絡(luò)控制部分選用CS8900A作為以太網(wǎng)控制器。Flash選用Samsung公司的容量為64MB的NAND Flash型K9F1208存儲器,SDRAM選用容量為64MB的HY57V561620AT存儲器。

        圖2 硬件系統(tǒng)結(jié)構(gòu)框圖

        軟件設(shè)計包括系統(tǒng)引導(dǎo)加載程序Bootloader、配置裁減過的Linux操作系統(tǒng)內(nèi)核和CRAMFS根文件系統(tǒng)。

        2 嵌入式WEB服務(wù)器的構(gòu)建[2]

        典型的嵌入式WEB服務(wù)器有BOA和THTTPD等。這里選用BOA作為嵌入式WEB服務(wù)器,BOA是一個非常小巧的WEB服務(wù)器,可執(zhí)行的代碼大約60KB。它是一個單任務(wù)的WEB服務(wù)器,只能一次完成用戶的請求,而不會創(chuàng)建(fork)出新的進(jìn)程來處理并發(fā)連接請求,但BOA支持CGI,并且能為CGI程序創(chuàng)建出一個新的進(jìn)程來執(zhí)行。BOA服務(wù)器的設(shè)計目標(biāo)是速度快和安全性好,在其站點(diǎn)公布的性能測試中,BOA的性能要好于Apache服務(wù)器的性能。

        嵌入式WEB服務(wù)器BOA和普通WEB服務(wù)器一樣,能夠完成接收客戶端請求、分析請求、響應(yīng)請求、向客戶端返回請求結(jié)果等任務(wù)。嵌入式WEB服務(wù)器工作原理如圖3所示。

        圖3 嵌入式WEB服務(wù)器工作原理

        嵌入式WEB服務(wù)器主要功能包括:

        ①完成WEB服務(wù)器的初始化工作,如建立TCP套接字、綁定端口、開始偵聽以及等待接收WEB瀏覽器的連接請求;

        ②當(dāng)有請求連接時,WEB服務(wù)器接收來自客戶端請求;

        ③接收到客戶端的連接請求之后,分析客戶端請求,解析出請求的方法、URL目標(biāo)、可選的查詢信息及表單信息,同時根據(jù)請求進(jìn)行相應(yīng)的處理;

        ④WEB服務(wù)器完成相應(yīng)處理后,向WEB瀏覽器發(fā)送響應(yīng)信息;

        ⑤關(guān)閉與客戶端的連接。

        嵌入式BOA服務(wù)器的構(gòu)建過程如下:

        ①從www.boa.org下載BOA源碼,BOA的版本為0.94.13。

        ②解壓。

        #tar-xzvfboa-0.94.13.tar.gz

        ③進(jìn)入源代碼目錄。

        #cdboa-0.94.13/src

        ④運(yùn)行configure文件,會生成Make-file文件。

        #./configure

        ⑤修改Makefile文件,將

        CC=gcc,CPP=gcc-E改成

        CC=arm-linux-gcc,CPP=arm-linux-gcc-E

        ⑥進(jìn)行交叉編譯。

        #make

        ⑦去除調(diào)試信息,減小文件大小。

        #arm-linux-strip boa

        3 SQLite在ARM平臺上的移植[3]

        SQLite是由D.Richard Hipp用C語言開發(fā)的輕量級嵌入式數(shù)據(jù)庫,它是應(yīng)用最廣泛的嵌入式數(shù)據(jù)庫之一。SQLite的源代碼完全開放,可以免費(fèi)用于任何用途,包括商業(yè)目的。SQLite提供了對SQL92的大多數(shù)支持,如多表和索引、事務(wù)、視圖、觸發(fā)和一系列的用戶接口及驅(qū)動。

        SQLite的體系結(jié)構(gòu)如圖4所示。對數(shù)據(jù)庫進(jìn)行的各種操作都是按照此順序執(zhí)行的。頂層是標(biāo)記處理器(tokenize)和分析器(parser)。底部是經(jīng)過優(yōu)化的B樹,這樣有助于運(yùn)行在可調(diào)整頁面緩沖時將對磁盤的查找降到最低。再往下是頁面高速緩存,它作用在OS抽象層之上。該體系結(jié)構(gòu)的核心是虛擬數(shù)據(jù)引擎(VDBE),完成與數(shù)據(jù)相關(guān)的全部任務(wù),并且是客戶和存儲之間信息交換的中間單元。當(dāng)SQL語句被分析后,虛擬數(shù)據(jù)庫引擎就開始工作。代碼生成器將分析樹翻譯成一個袖珍程序,隨后又被組合成虛擬機(jī)器語言表示的一系列指令。

        圖4 SQLite的體系結(jié)構(gòu)

        SQLite的主要接口函數(shù)有3個,分別是sqlite_open()、sqlite_close()和sqlite_exec()。其中,sqlite_open()用于打開一個SQLite數(shù)據(jù)庫,如果成功打開則返回數(shù)據(jù)庫的句柄,否則返回FALSE;sqlite_close()用于關(guān)閉SQLite數(shù)據(jù)庫,無返回值;sqlite_exec()執(zhí)行相應(yīng)的SQL命令。

        SQLite的移植過程如下:

        ①從www.sqlite.org下載sqlite-2.8.17.tar.gz源碼,并解壓。

        ②在文件sqlite.h中指定SQLITE_PTR_SZ的值為4,使B樹有正確的變量大小。

        ③修改配置文件configure,注釋掉$cross_compiling相關(guān)的代碼。

        ④配置以生成Makefile。

        #./configure--disable-tcl--h(huán)ost=arm-linux

        ⑤進(jìn)入Makefile文件,將BCC=arm-linux-gcc-g-O2改成BCC=gcc-g-O2。由于編譯生成的可執(zhí)行文件要在ARM開發(fā)板上運(yùn)行,為了方便,將后面指定生成的庫libsqlite.la改成libsqlite.a,即編譯成靜態(tài)鏈接的形式。

        ⑥使用#make命令進(jìn)行編譯,以生成可執(zhí)行文件sqlite3。

        ⑦去除其中的調(diào)試信息,以減小文件的大小。

        #arm-linux-strip sqlite3

        CGI(Common Gateway Interface,公共網(wǎng)關(guān)接口)定義了WEB服務(wù)器與外部擴(kuò)展程序(CGI程序)之間進(jìn)行交互的接口標(biāo)準(zhǔn)。在WEB環(huán)境下,客戶端瀏覽器將數(shù)據(jù)傳送給WEB服務(wù)器,WEB服務(wù)器通過調(diào)用CGI程序?qū)崿F(xiàn)和WEB瀏覽器的交互。也就是說,CGI程序負(fù)責(zé)接收來自客戶端的信息并進(jìn)行相應(yīng)的處理,將相應(yīng)的結(jié)果再發(fā)送給WEB瀏覽器。CGI程序主要是從環(huán)境變量中獲取相關(guān)信息并處理,最后的結(jié)果以HTML的格式輸出返回給瀏覽器。通過編寫不同的CGI外部擴(kuò)展程序,可以完成對WEB網(wǎng)頁中表單(Form)數(shù)據(jù)的處理、數(shù)據(jù)庫的查詢及現(xiàn)場設(shè)備數(shù)據(jù)的采集任務(wù),因此客戶端用戶通過CGI程序和嵌入式WEB服務(wù)器就可以完成對動態(tài)數(shù)據(jù)的訪問。

        嵌入式WEB服務(wù)器要訪問SQLite,CGI是一個非常不錯的選擇。CGI是外部擴(kuò)展應(yīng)用程序(例如用C語言編寫的C腳本語言)與WEB服務(wù)器交互的一個標(biāo)準(zhǔn)接口。而CGI標(biāo)準(zhǔn)可簡單概括為:CGI程序是通過標(biāo)準(zhǔn)輸入(STDIN)或環(huán)境變量來得到服務(wù)器的輸入信息,并通過標(biāo)準(zhǔn)輸出(STDOUT)向服務(wù)器輸出信息。按照CGI標(biāo)準(zhǔn)編寫的外部擴(kuò)展應(yīng)用程序可以處理WEB瀏覽器輸入的需要協(xié)同工作的數(shù)據(jù),完成WEB瀏覽器與WEB服務(wù)器的交互操作。

        在WEB環(huán)境下,瀏覽器與服務(wù)器之間的數(shù)據(jù)交互,大多是通過HTML中的Form表單實現(xiàn)的。Form提供了兩種數(shù)據(jù)傳輸?shù)姆绞健狦ET與POST。GET方式傳輸?shù)臄?shù)據(jù)受URL長度的限制,因此傳輸?shù)臄?shù)據(jù)量小,且在傳輸數(shù)據(jù)的過程中是不安全的,而POST方式則不存在上述的缺點(diǎn),故選擇用POST來進(jìn)行數(shù)據(jù)的傳輸。根據(jù)CGI規(guī)范,對于POST方式,在WEB服務(wù)器中需要根據(jù)表單提交的數(shù)據(jù)長度,將其重定向為CGI程序的標(biāo)準(zhǔn)輸入,這樣CGI程序就可以通過標(biāo)準(zhǔn)輸入來得到客戶端提交的數(shù)據(jù)。重定向是通過UNIX管道機(jī)制來實現(xiàn)的。

        POST方式下CGI的工作原理如圖5所示。WEB服務(wù)器是WEB瀏覽器與CGI程序之間的通道。WEB服務(wù)器接收到CGI請求后,就創(chuàng)建出一個主進(jìn)程,同時也將接收到的數(shù)據(jù)傳遞給主進(jìn)程。主進(jìn)程為了讀取來自WEB服務(wù)器數(shù)據(jù)的長度,fork出一個子進(jìn)程,創(chuàng)建出管道,并將管道的輸入端重定向為CGI的標(biāo)準(zhǔn)輸入。子進(jìn)程通過管道將數(shù)據(jù)長度傳遞給CGI程序,CGI程序通過標(biāo)準(zhǔn)輸出將處理的結(jié)果發(fā)送給服務(wù)器,服務(wù)器再將相應(yīng)信息傳遞給客戶端瀏覽器并顯示出來。

        要實現(xiàn)嵌入式遠(yuǎn)程數(shù)據(jù)的采集,先要將嵌入式設(shè)備采集的現(xiàn)場數(shù)據(jù)存儲到服務(wù)器的SQLite數(shù)據(jù)庫上,然后通過編寫相應(yīng)的CGI程序來訪問SQLite數(shù)據(jù)庫。CGI程序必須滿足CGI規(guī)范,CGI程序使用C語言編寫,因此CGI程序可以調(diào)用SQLite提供的接口函數(shù)來訪問數(shù)據(jù)庫,同

        圖5 POST方式下CGI的工作原理

        樣要使用sqlite3_open()、sqlite3_exec()和sqlite3_close()這3個接口函數(shù)來操作數(shù)據(jù)庫。此外,如果想取回SQL語句訪問數(shù)據(jù)庫的結(jié)果,就要對每一個記錄執(zhí)行回調(diào)函數(shù)callback()。

        [1]王海龍,徐曉輝,等.基于嵌入式Web服務(wù)器的遠(yuǎn)程控制系統(tǒng)的實現(xiàn)[J].電子設(shè)計工程,2010(5).

        [2]劉瓊,馬海波,姜薇.SQLite在嵌入式Web服務(wù)器中的應(yīng)用研究[J].微計算機(jī)信息,2010(8).

        [3]俞輝,李永,等.ARM嵌入式Linux系統(tǒng)設(shè)計與開發(fā)[M].北京:機(jī)械工業(yè)出版社,2010.

        [4]歐文盛.嵌入式Linux應(yīng)用實例開發(fā)[M].北京:中國電力出版社,2008.

        [5]李艷軍.基于Linux的嵌入式Web服務(wù)器Thttpd的應(yīng)用研究與實現(xiàn)[J].信息化研究,2010,36(2).

        猜你喜歡
        瀏覽器嵌入式客戶端
        反瀏覽器指紋追蹤
        電子制作(2019年10期)2019-06-17 11:45:14
        縣級臺在突發(fā)事件報道中如何應(yīng)用手機(jī)客戶端
        傳媒評論(2018年4期)2018-06-27 08:20:24
        孵化垂直頻道:新聞客戶端新策略
        傳媒評論(2018年4期)2018-06-27 08:20:16
        基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
        電子測試(2018年10期)2018-06-26 05:53:34
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        環(huán)球瀏覽器
        再見,那些年我們嘲笑過的IE瀏覽器
        Altera加入嵌入式視覺聯(lián)盟
        倍福 CX8091嵌入式控制器
        自動化博覽(2014年4期)2014-02-28 22:31:15
        人人爽亚洲aⅴ人人爽av人人片| 一本色道久久88精品综合| 国产剧情亚洲一区二区三区| 亚洲一区二区三区ay| 中文字幕视频一区二区| 国产一区二区三区视频地址| 日本免费在线一区二区三区| 国产成人一区二区三区乱| 操风骚人妻沉沦中文字幕| 久久久精品中文字幕麻豆发布| 免费成人电影在线观看| 亚洲av高清在线观看一区二区| 又爽又黄又无遮挡网站| 曰欧一片内射vα在线影院| 日日摸天天摸人人看| aaa级久久久精品无码片| 国产第一页屁屁影院| 国产剧情福利AV一区二区| 亚洲电影中文字幕| 欧洲国产成人精品91铁牛tv| 国产精品1区2区| 少妇熟女淫荡丰满| 久久伊人中文字幕有码久久国产| 一区两区三区视频在线观看| 精品国产免费一区二区久久| 亚洲国产综合精品中久| 亚洲国产精品一区二区毛片| 麻豆国产精品va在线观看不卡| 日本熟日本熟妇中文在线观看| 亚洲中文字幕久在线| 丰满少妇大力进入av亚洲| 久久久久亚洲av无码网站| 亚洲人成18禁网站| 亚洲老女人区一区二视频| 99久久精品人妻一区二区三区| 二区三区日本高清视频| 人人妻人人澡人人爽欧美一区双 | 台湾佬中文娱乐网22| 骚片av蜜桃精品一区| 小sao货水好多真紧h视频| 2022国内精品免费福利视频|