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

嵌入式Web服務器的實現及其CGI應用

2011-06-05 11:02:02郭書軍
電子設計工程 2011年21期
關鍵詞:嵌入式程序

王 俊,郭書軍

(北方工業大學 信息工程學院,北京 100144)

隨著互聯網技術的發展與普及,人們的生活越來越密切地與網絡聯系在一起。嵌入式技術已普遍應用于各個領域,有越來越多的信息化產品需要接入Internet網。用戶將可以通過Web頁面進行遠程訪問和控制,進而查看和修改所關注的遠程設備的相關信息。嵌入式Web服務器和CGI的結合使用可以很好地實現這個需求,這種方案不僅可以滿足嵌入式設備接入互聯網的需求,也可以實現客戶端與Web服務器之間的動態數據交互[1]。

文中主要分析嵌入式Web服務器技術,研究了Shttpd在嵌入式系統下的移植,并借助于CGI技術實現了客戶端與服務端的動態數據交互與訪問。本文實驗部分的硬件平臺是華恒科技的HHARM6410開發板,它采用了三星公司的基于ARM11內核的S3C6410處理器。軟件平臺是基于Linux 2.4.2內核的Red Hat Linux操作系統。

1 嵌入式Linux下Web服務器的實現

傳統意義上的Web服務器是以具有高運算處理能力和大容量存儲空間的工作站或PC機為硬件工作平臺,以非實時操作系統為軟件工作平臺,它通常被設計用來處理大量用戶對普通網站的同時并發訪問。但嵌入式設備處理器能力有限、存儲容量小,只能采用功能相對簡單、體積小、消耗資源少的Web服務器,嵌入式Web服務器由此產生。

1.1 嵌入式Web服務器的選擇

嵌入式Web服務器通常采用Browse/Server的工作方式,在這種工作方式下,客戶端僅需要一個瀏覽器程序,而服務器端則需要一個嵌入式Web服務器。客戶端可以使用瀏覽器來訪問Web服務器,并可通過網頁來進行相應的設置和操作。嵌入式Web服務器監聽客戶端的服務請求,并根據客戶請求的類型來提供相應的服務,返回相應的處理結果[2]。

典型的嵌入式Web服務器有Httpd、Boa以及Shttpd等。Httpd是最簡單的一個Web服務器,它的功能最弱,不支持認證,不支持CGI。Shttpd和Boa都支持認證、CGI等,功能都比較全。Boa是一個單任務的小型Web服務器,只能依次完成用戶的請求,而不會創建新的進程來處理并發連接請求。Shttpd是一個輕量級的Web服務器,具有更豐富的功能特性,支持CGI,SSL,cookie,MD5認證,還能嵌入到現有的軟件里,更為方便的是它不需要配置文件。因此本文選用Shttpd作為嵌入式Linux下的Web服務器。

1.2 嵌入式Web服務器Shttpd的移植及實現

步驟如下:

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

交叉編譯,得到可執行程序shttpd:

#make unix

3)運行 shttpd

將編譯好的程序拷到開發板的文件系統下:

#cp shttpd/sbin

在開發板的/var目錄下建立www文件夾:

#mkdir/var/www

啟動shttpd服務器:

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

4)靜態網頁測試

在開發板的/var/www目錄下放入測試網頁:index.html

在客戶端瀏覽器中輸入開發板的IP地址,即可打開測試網頁。

2 CGI技術簡介

2.1 CGI工作原理

CGI(Common Gateway Interface)是外部擴展應用程序與Web服務器交互的一個標準接口。它規定了Web服務器調用其它可執行程序(CGI程序)的接口協議標準。Web服務器通過調用CGI程序實現和Web瀏覽器的交互,也就是CGI程序接受Web瀏覽器發送給Web服務器的信息,進行處理,將響應結果再回送給Web服務器及Web瀏覽器。按照CGI標準編寫的外部擴展程序能夠處理來自客戶端瀏覽器輸入的數據,從而完成客戶端與服務器的交互,實現動態Web技術[3]。

其工作原理如圖1所示。

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

客戶端用戶通過瀏覽器將用戶輸入數據傳遞給Web服務器,Web服務器守護進程接收到該請求后,會創建一個CGI的子進程。該子進程將CGI請求的有關數據設置成環境變量,并啟動URL指定的CGI程序,CGI程序從環境變量中讀取所需要的數據,經過處理后,最后使用STDOUT輸出HTML形式的結果文件,經Web服務器送回瀏覽器顯示給用戶。

2.2 CGI的傳送方法

CGI的傳送方法即Web服務器調用CGI程序的途徑。HTML向CGI提交請求都是通過表單來實現的。在表單元素FORM中,有一個METHOD屬性,它定義了程序如何接收所傳遞的數據。CGI方法有主要有GET和POST兩種方法[4]。

1)GET 方法

使用此方法時,表單數據會附加在所指向CGI程序的URL后一起發送給Web服務器,Web服務器將收到的表單數據賦予環境變量QUERY-STRING,CGI程序將以字符串的形式從環境變量QUERY_STRING中獲取數據。

2)POST 方法

使用POST方法時,Web服務器的STDOUT反饋到CGI程序的STDIN,并且腳本的STDOUT反饋到服務器的STDIN,從而完成一個完整的操作過程。

2.3 CGI的環境變量

操作系統為用戶提供了許多環境變量,它們定義了程序的執行環境,應用程序可以存取它們。Web服務器和CGI接口又另外設置了自己的一些環境變量,用來向CGI程序傳遞一些重要的參數。服務器與CGI程序交換信息的協作方式都是通過環境變量來完成的[5]。

2.4 CGIC函數庫

C語言是一種使用廣泛的編程語言,它完全可以勝任CGI程序的編寫,在完成復雜的CGI程序時,一定要選擇合適的庫。CGIC是一個支持CGI開發的開源C庫,它封裝了一些用C語言開發CGI程序時的常用函數,給CGI的開發帶來了極大的方便。

3 CGI在嵌入式Web服務器中的應用

3.1 CGIC在嵌入式平臺下的移植

1)下載并解壓源碼包

從CGIC的官方項目網站http://www.boutell.com/cgic下載源碼,當前版本為2.05。解壓并進入源碼目錄:

#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庫文件libcgic.a

3.2 基于CGI的串口程序實現

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

下面通過一個簡單的串口程序來展示通過CGIC開發CGI程序的過程。客戶端在提交表單中的數據后,CGI程序將表單內的數據取出并發送至串口,通過連接到開發板數據串口端的另一臺PC機的超級終端即可看到發送到串口的數據。

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

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

4 結束語

嵌入式Web服務器和CGI技術的結合可以很方便地實現客戶端瀏覽器與Web服務器的動態數據交互,進而實現用戶對嵌入式設備的遠程監控。本文詳細闡述了Web服務器Shttpd在S3C6410開發板下的移植,介紹了CGI的工作原理,并采用C語言編寫了基于CGI的串口程序,實現了客戶端瀏覽器與Web服務器間的動態數據交互。用戶可以根據功能需求編寫出自己的CGI應用程序,采用這種方案的嵌入式Web服務器可以廣泛應用于工業控制、智能家居等多個領域,具有十分廣闊的前景。

[1]李勇.CGI在嵌入式WEB服務器中的應用和實現[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技術全面接觸[M].北京:清華大學出版社,2001.

[3]張曦煌,柴志雷.嵌入式Web服務器中CGI的特點及實現[J].小型微型計算機系統,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實例教程[M].北京:電子工業出版社,2000.

猜你喜歡
嵌入式程序
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 亚洲免费播放| 毛片在线播放网址| 日韩欧美综合在线制服| 久久这里只有精品66| 亚洲欧美日韩另类在线一| 国产91丝袜在线观看| 日韩欧美视频第一区在线观看 | AV不卡无码免费一区二区三区| 超碰色了色| 国产成人AV综合久久| 中文字幕av无码不卡免费| 67194成是人免费无码| 国产欧美性爱网| 亚洲婷婷在线视频| 国产欧美视频在线观看| 午夜精品一区二区蜜桃| 国产成人免费观看在线视频| 亚洲av综合网| 亚洲国产91人成在线| 国产丰满成熟女性性满足视频| www.狠狠| 亚洲高清无在码在线无弹窗| 玖玖精品在线| 亚洲人成网站在线播放2019| 久久综合九色综合97网| 少妇精品在线| 欧美国产在线看| 青青热久免费精品视频6| 亚洲欧美自拍中文| 67194在线午夜亚洲| 国产永久免费视频m3u8| 国产精品视频久| 久久久久久午夜精品| 精品精品国产高清A毛片| 精品国产电影久久九九| 综合五月天网| 国产波多野结衣中文在线播放| 重口调教一区二区视频| 成人毛片在线播放| 欧美a级完整在线观看| 亚洲人成在线精品| 久久青草热| 91麻豆精品视频| 亚洲91精品视频| 久久精品中文无码资源站| 久久精品人人做人人爽97| 国产自在线播放| 一级毛片在线免费视频| 国产精品.com| 亚洲aⅴ天堂| 91精品啪在线观看国产60岁| 亚洲VA中文字幕| 国产色婷婷视频在线观看| 中文字幕亚洲精品2页| 黄色a一级视频| 亚洲天堂首页| av午夜福利一片免费看| 亚洲精品第一页不卡| 国产成人高清精品免费5388| 国产精品所毛片视频| 黄色网在线| 免费在线国产一区二区三区精品| 亚洲开心婷婷中文字幕| 国产91全国探花系列在线播放| 人妻一区二区三区无码精品一区| 亚洲综合二区| 91精品网站| 国产综合精品日本亚洲777| 国产亚洲男人的天堂在线观看| 久久久久免费看成人影片| 国产精品无码翘臀在线看纯欲| 91在线一9|永久视频在线| 国产精品美女在线| 福利一区在线| 男女性午夜福利网站| 亚洲最大在线观看| 高清色本在线www| 99免费视频观看| 亚洲天堂啪啪| 国产浮力第一页永久地址| 熟妇丰满人妻| 国产综合无码一区二区色蜜蜜|