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

        ?

        嵌入式Web服務(wù)器的實(shí)現(xiàn)及其CGI應(yīng)用

        2011-06-05 11:02:02郭書(shū)軍
        電子設(shè)計(jì)工程 2011年21期
        關(guān)鍵詞:源碼環(huán)境變量開(kāi)發(fā)板

        王 俊,郭書(shū)軍

        (北方工業(yè)大學(xué) 信息工程學(xué)院,北京 100144)

        隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與普及,人們的生活越來(lái)越密切地與網(wǎng)絡(luò)聯(lián)系在一起。嵌入式技術(shù)已普遍應(yīng)用于各個(gè)領(lǐng)域,有越來(lái)越多的信息化產(chǎn)品需要接入Internet網(wǎng)。用戶將可以通過(guò)Web頁(yè)面進(jìn)行遠(yuǎn)程訪問(wèn)和控制,進(jìn)而查看和修改所關(guān)注的遠(yuǎn)程設(shè)備的相關(guān)信息。嵌入式Web服務(wù)器和CGI的結(jié)合使用可以很好地實(shí)現(xiàn)這個(gè)需求,這種方案不僅可以滿足嵌入式設(shè)備接入互聯(lián)網(wǎng)的需求,也可以實(shí)現(xiàn)客戶端與Web服務(wù)器之間的動(dòng)態(tài)數(shù)據(jù)交互[1]。

        文中主要分析嵌入式Web服務(wù)器技術(shù),研究了Shttpd在嵌入式系統(tǒng)下的移植,并借助于CGI技術(shù)實(shí)現(xiàn)了客戶端與服務(wù)端的動(dòng)態(tài)數(shù)據(jù)交互與訪問(wèn)。本文實(shí)驗(yàn)部分的硬件平臺(tái)是華恒科技的HHARM6410開(kāi)發(fā)板,它采用了三星公司的基于ARM11內(nèi)核的S3C6410處理器。軟件平臺(tái)是基于Linux 2.4.2內(nèi)核的Red Hat Linux操作系統(tǒng)。

        1 嵌入式Linux下Web服務(wù)器的實(shí)現(xiàn)

        傳統(tǒng)意義上的Web服務(wù)器是以具有高運(yùn)算處理能力和大容量存儲(chǔ)空間的工作站或PC機(jī)為硬件工作平臺(tái),以非實(shí)時(shí)操作系統(tǒng)為軟件工作平臺(tái),它通常被設(shè)計(jì)用來(lái)處理大量用戶對(duì)普通網(wǎng)站的同時(shí)并發(fā)訪問(wèn)。但嵌入式設(shè)備處理器能力有限、存儲(chǔ)容量小,只能采用功能相對(duì)簡(jiǎn)單、體積小、消耗資源少的Web服務(wù)器,嵌入式Web服務(wù)器由此產(chǎn)生。

        1.1 嵌入式Web服務(wù)器的選擇

        嵌入式Web服務(wù)器通常采用Browse/Server的工作方式,在這種工作方式下,客戶端僅需要一個(gè)瀏覽器程序,而服務(wù)器端則需要一個(gè)嵌入式Web服務(wù)器??蛻舳丝梢允褂脼g覽器來(lái)訪問(wèn)Web服務(wù)器,并可通過(guò)網(wǎng)頁(yè)來(lái)進(jìn)行相應(yīng)的設(shè)置和操作。嵌入式Web服務(wù)器監(jiān)聽(tīng)客戶端的服務(wù)請(qǐng)求,并根據(jù)客戶請(qǐng)求的類(lèi)型來(lái)提供相應(yīng)的服務(wù),返回相應(yīng)的處理結(jié)果[2]。

        典型的嵌入式Web服務(wù)器有Httpd、Boa以及Shttpd等。Httpd是最簡(jiǎn)單的一個(gè)Web服務(wù)器,它的功能最弱,不支持認(rèn)證,不支持CGI。Shttpd和Boa都支持認(rèn)證、CGI等,功能都比較全。Boa是一個(gè)單任務(wù)的小型Web服務(wù)器,只能依次完成用戶的請(qǐng)求,而不會(huì)創(chuàng)建新的進(jìn)程來(lái)處理并發(fā)連接請(qǐng)求。Shttpd是一個(gè)輕量級(jí)的Web服務(wù)器,具有更豐富的功能特性,支持CGI,SSL,cookie,MD5認(rèn)證,還能嵌入到現(xiàn)有的軟件里,更為方便的是它不需要配置文件。因此本文選用Shttpd作為嵌入式Linux下的Web服務(wù)器。

        1.2 嵌入式Web服務(wù)器Shttpd的移植及實(shí)現(xiàn)

        步驟如下:

        1)下載并解壓源碼包

        下載 Shttpd 源碼包(Shttpd-1.39.tar.gz):http://shttpd.sourceforge.net/

        解壓源碼包:#tar zxvf shttpd-1.39.tar.gz

        2)交叉編譯

        #cd shttpd-1.39

        #cd src/

        #vi Makefile

        修改交叉編譯器路徑:

        CC=/opt/arm-2008q3/bin/arm-none-linux-gnueabi-gcc

        AR=/opt/arm-2008q3/bin/arm-none-linux-gnueabi-ar

        交叉編譯,得到可執(zhí)行程序shttpd:

        #make unix

        3)運(yùn)行 shttpd

        將編譯好的程序拷到開(kāi)發(fā)板的文件系統(tǒng)下:

        #cp shttpd/sbin

        在開(kāi)發(fā)板的/var目錄下建立www文件夾:

        #mkdir/var/www

        啟動(dòng)shttpd服務(wù)器:

        #shttpd-root/var/www-ports 80&

        4)靜態(tài)網(wǎng)頁(yè)測(cè)試

        在開(kāi)發(fā)板的/var/www目錄下放入測(cè)試網(wǎng)頁(yè):index.html

        在客戶端瀏覽器中輸入開(kāi)發(fā)板的IP地址,即可打開(kāi)測(cè)試網(wǎng)頁(yè)。

        2 CGI技術(shù)簡(jiǎn)介

        2.1 CGI工作原理

        CGI(Common Gateway Interface)是外部擴(kuò)展應(yīng)用程序與Web服務(wù)器交互的一個(gè)標(biāo)準(zhǔn)接口。它規(guī)定了Web服務(wù)器調(diào)用其它可執(zhí)行程序(CGI程序)的接口協(xié)議標(biāo)準(zhǔn)。Web服務(wù)器通過(guò)調(diào)用CGI程序?qū)崿F(xiàn)和Web瀏覽器的交互,也就是CGI程序接受Web瀏覽器發(fā)送給Web服務(wù)器的信息,進(jìn)行處理,將響應(yīng)結(jié)果再回送給Web服務(wù)器及Web瀏覽器。按照CGI標(biāo)準(zhǔn)編寫(xiě)的外部擴(kuò)展程序能夠處理來(lái)自客戶端瀏覽器輸入的數(shù)據(jù),從而完成客戶端與服務(wù)器的交互,實(shí)現(xiàn)動(dòng)態(tài)Web技術(shù)[3]。

        其工作原理如圖1所示。

        圖1 CGI的工作原理Fig.1 Dperating principle of CGI

        客戶端用戶通過(guò)瀏覽器將用戶輸入數(shù)據(jù)傳遞給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)境變量,并啟動(dòng)URL指定的CGI程序,CGI程序從環(huán)境變量中讀取所需要的數(shù)據(jù),經(jīng)過(guò)處理后,最后使用STDOUT輸出HTML形式的結(jié)果文件,經(jīng)Web服務(wù)器送回瀏覽器顯示給用戶。

        2.2 CGI的傳送方法

        CGI的傳送方法即Web服務(wù)器調(diào)用CGI程序的途徑。HTML向CGI提交請(qǐng)求都是通過(guò)表單來(lái)實(shí)現(xiàn)的。在表單元素FORM中,有一個(gè)METHOD屬性,它定義了程序如何接收所傳遞的數(shù)據(jù)。CGI方法有主要有GET和POST兩種方法[4]。

        1)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方法時(shí),Web服務(wù)器的STDOUT反饋到CGI程序的STDIN,并且腳本的STDOUT反饋到服務(wù)器的STDIN,從而完成一個(gè)完整的操作過(guò)程。

        2.3 CGI的環(huán)境變量

        操作系統(tǒng)為用戶提供了許多環(huán)境變量,它們定義了程序的執(zhí)行環(huán)境,應(yīng)用程序可以存取它們。Web服務(wù)器和CGI接口又另外設(shè)置了自己的一些環(huán)境變量,用來(lái)向CGI程序傳遞一些重要的參數(shù)。服務(wù)器與CGI程序交換信息的協(xié)作方式都是通過(guò)環(huán)境變量來(lái)完成的[5]。

        2.4 CGIC函數(shù)庫(kù)

        C語(yǔ)言是一種使用廣泛的編程語(yǔ)言,它完全可以勝任CGI程序的編寫(xiě),在完成復(fù)雜的CGI程序時(shí),一定要選擇合適的庫(kù)。CGIC是一個(gè)支持CGI開(kāi)發(fā)的開(kāi)源C庫(kù),它封裝了一些用C語(yǔ)言開(kāi)發(fā)CGI程序時(shí)的常用函數(shù),給CGI的開(kāi)發(fā)帶來(lái)了極大的方便。

        3 CGI在嵌入式Web服務(wù)器中的應(yīng)用

        3.1 CGIC在嵌入式平臺(tái)下的移植

        1)下載并解壓源碼包

        從CGIC的官方項(xiàng)目網(wǎng)站http://www.boutell.com/cgic下載源碼,當(dāng)前版本為2.05。解壓并進(jìn)入源碼目錄:

        #tar xzf cgic205.tar.gz

        #cd cgic205

        2)修改Makefile文件

        #vi Makefile

        修改CC=gcc為CC=/opt/arm-2008q3/bin/arm-none-linuxgnueabi-gcc

        修改AR=ar為 AR=/opt/arm-2008q3/bin/arm-none-linuxgnueabi-ar

        修改RANLIB=ranlib為RANLIB=/opt/arm-2008q3/bin/arm-none-linux-gnueabi-ranlib

        修改 gcc cgictest.o-o cgictest.cgi${LIBS}為$(CC)$(CFLAGS)ttycgic.o-o ttycgic.cgi${LIBS}

        修改 gcc capture.o-o capture${LIBS}為$(CC)$(CFLAGS)capture.o-o capture${LIBS}

        3)交叉編譯

        #make

        編譯成功后得到CGIC庫(kù)文件libcgic.a

        3.2 基于CGI的串口程序?qū)崿F(xiàn)

        整個(gè)CGIC函數(shù)庫(kù)實(shí)際上就是cgic.c一個(gè)文件,非常的精簡(jiǎn)。用CGIC進(jìn)行C語(yǔ)言的CGI程序開(kāi)發(fā)時(shí),可以將CGIC編譯為模塊,也可以直接將自己編寫(xiě)的CGI程序和cgic.c及cgic.h一起編譯。從cgic.c的代碼可以看出,它已經(jīng)定義了main函數(shù),對(duì)于使用CGIC編寫(xiě)的CGI程序,都是從cgic.c中的代碼進(jìn)入,在庫(kù)函數(shù)完成了一系列初始化操作之后,比如解析參數(shù)、獲取系統(tǒng)環(huán)境變量,它才會(huì)調(diào)用用戶編寫(xiě)的代碼。所以我們?cè)谡{(diào)用CGIC庫(kù)開(kāi)發(fā)自己的CGI程序時(shí),不能再使用main(),而要使用CGIC提供的cgimain()開(kāi)始程序。另外CGI程序輸出HTML頁(yè)面的方式都是使用printf把頁(yè)面一行一行地打印出來(lái),這就需要我們對(duì)HTML網(wǎng)頁(yè)的格式及編寫(xiě)方法有所了解[6]。

        下面通過(guò)一個(gè)簡(jiǎn)單的串口程序來(lái)展示通過(guò)CGIC開(kāi)發(fā)CGI程序的過(guò)程??蛻舳嗽谔峤槐韱沃械臄?shù)據(jù)后,CGI程序?qū)⒈韱蝺?nèi)的數(shù)據(jù)取出并發(fā)送至串口,通過(guò)連接到開(kāi)發(fā)板數(shù)據(jù)串口端的另一臺(tái)PC機(jī)的超級(jí)終端即可看到發(fā)送到串口的數(shù)據(jù)。

        CGI串口程序部分源代碼如下:

        圖2 串口程序發(fā)送界面Fig.2 Sending interface of serial port program

        4 結(jié)束語(yǔ)

        嵌入式Web服務(wù)器和CGI技術(shù)的結(jié)合可以很方便地實(shí)現(xiàn)客戶端瀏覽器與Web服務(wù)器的動(dòng)態(tài)數(shù)據(jù)交互,進(jìn)而實(shí)現(xiàn)用戶對(duì)嵌入式設(shè)備的遠(yuǎn)程監(jiān)控。本文詳細(xì)闡述了Web服務(wù)器Shttpd在S3C6410開(kāi)發(fā)板下的移植,介紹了CGI的工作原理,并采用C語(yǔ)言編寫(xiě)了基于CGI的串口程序,實(shí)現(xiàn)了客戶端瀏覽器與Web服務(wù)器間的動(dòng)態(tài)數(shù)據(jù)交互。用戶可以根據(jù)功能需求編寫(xiě)出自己的CGI應(yīng)用程序,采用這種方案的嵌入式Web服務(wù)器可以廣泛應(yīng)用于工業(yè)控制、智能家居等多個(gè)領(lǐng)域,具有十分廣闊的前景。

        [1]李勇.CGI在嵌入式WEB服務(wù)器中的應(yīng)用和實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,10(3):110-111.LI Yong.Application and realization of CGI in embedded WEB server[J].Micro-computer information,2008,10(3):110-111.

        [2]劉偉,李小武,羅明.CGI技術(shù)全面接觸[M].北京:清華大學(xué)出版社,2001.

        [3]張曦煌,柴志雷.嵌入式Web服務(wù)器中CGI的特點(diǎn)及實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2003,24(11):2046-2047.ZHANG Xi-huang,CHAI Zhi-lei.Properties and Implementationsof CGI in embedded web Server[J].Mini-micro systems,2003,24(11):2046-2047.

        [4]WANG Zhen-xi,REN Xian-yi.A study on cgi of embedded webserver[J].International Symposium on Computer Science and Computational Technology,2008(1):480-483.

        [5]CHEN Tian-huang,HUANG Jia-xi.Design and realization of CGI in embedded dynamic web technology[J].International Conference on Network and Parallel Computing-Workshops,2007(39):774-777.

        [6]曹建,李文斌,張劍峰,等.Perl5、PHP4與CGI實(shí)例教程[M].北京:電子工業(yè)出版社,2000.

        猜你喜歡
        源碼環(huán)境變量開(kāi)發(fā)板
        基于最大熵模型的云南思茅松潛在分布區(qū)
        基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲(chóng)代碼生成方法
        基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
        企業(yè)如何保護(hù)源碼
        從桌面右鍵菜單調(diào)用環(huán)境變量選項(xiàng)
        徹底弄懂Windows 10環(huán)境變量
        Microchip最新推出兩款PIC32 Curiosity開(kāi)發(fā)板
        淺析單片機(jī)開(kāi)發(fā)板的設(shè)計(jì)與制作
        電子制作(2017年22期)2017-02-02 07:10:14
        基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
        基于三階段DEA—Malmquist模型的中國(guó)省域城鎮(zhèn)化效率測(cè)度及其收斂分析
        极品美女扒开粉嫩小泬| 国产成人免费a在线视频| 香蕉视频一级| 曰本亚洲欧洲色a在线| 蜜桃传媒免费观看视频| 蜜桃视频在线看一区二区三区 | 日本熟妇人妻xxxx| 天天鲁一鲁摸一摸爽一爽| 亚洲日韩欧美国产高清αv| 丰满人妻AV无码一区二区三区| 亚洲精品中文字幕一二| 人妻av中文字幕久久| 白又丰满大屁股bbbbb| 亚洲伊人久久大香线蕉综合图片| 美女精品国产一区二区三区 | 日本视频一中文有码中文| 97碰碰碰人妻无码视频| 亚洲欧洲日产国码高潮αv| 毛片av在线播放亚洲av网站| 一本大道加勒比东京热| 中文字幕av高清人妻| 国产永久免费高清在线| 九九久久精品国产| 完整在线视频免费黄片| 久久久精品国产三级精品| 精品一二三四区中文字幕| 久久久久亚洲精品中文字幕 | av天堂在线免费播放| 91精品国产综合久久精品密臀| 国产精品亚洲一区二区三区| 少妇性饥渴bbbbb搡bbbb| 亚洲色婷婷免费视频高清在线观看| 人妻少妇av中文字幕乱码免费| 一区视频免费观看播放| 四虎成人精品国产永久免费无码| 日韩人妻精品无码一区二区三区| 国内视频一区| 国产精品毛片av毛片一区二区| 三年的高清电影免费看| 日本高清一区二区三区水蜜桃 | 日本一区二区午夜视频|