嵌入式linux系統(tǒng)中http協(xié)議的實(shí)現(xiàn)方法研究-嵌入式論文_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  論文題目:嵌入式LINUX系統(tǒng)中HTTP協(xié)議的實(shí)現(xiàn)方法研究</p><p>  學(xué) 生 姓 名: </p><p>  指 導(dǎo) 老 師: </p><p>  所 在 學(xué) 院: </p><p>  時(shí) 間: 2017 年 6

2、月 </p><p><b>  摘要</b></p><p>  隨著計(jì)算機(jī)技術(shù)的發(fā)展,嵌入式系統(tǒng)已成為計(jì)算機(jī)應(yīng)用領(lǐng)域的一個(gè)重要組成部分。隨著網(wǎng)絡(luò)技術(shù)與嵌入式技術(shù)的結(jié)合,Internet 網(wǎng)絡(luò)體系結(jié)構(gòu)中應(yīng)用層的各種協(xié)議,在嵌入式系統(tǒng)設(shè)備中有了實(shí)現(xiàn)的可能。本文就是在嵌入式系統(tǒng)設(shè)備上實(shí)現(xiàn) HTTP1.0 協(xié)議的部分功能。本論文從嵌入式系統(tǒng)的設(shè)計(jì)與開發(fā)入

3、手,到在嵌入式系統(tǒng)硬件設(shè)備上,實(shí)現(xiàn)基于Linux 操作系統(tǒng)上實(shí)現(xiàn) HTTP 協(xié)議的服務(wù)端功能程序。整個(gè)發(fā)生過程如下: 首先,嵌入式系統(tǒng)的硬件設(shè)備的選擇與實(shí)現(xiàn)。在眾多的嵌入式CPU中,考慮到實(shí)現(xiàn)HTTP協(xié)議的服務(wù)端功能程序,對CPU的性能要求不是很高,最終選擇了性價(jià)比較高的SAMSUNG公司的基于ARM7TDMI的S3C44B0X一款CPU芯片。以太網(wǎng)控制芯片為RTL8019AS。博創(chuàng)科技公司開發(fā)的一款實(shí)驗(yàn)箱恰好恰符合這種要求。</

4、p><p>  其次,嵌入式軟件系統(tǒng)的實(shí)現(xiàn)。對于嵌入式系統(tǒng)操作系統(tǒng)的選擇,由于硬件功能的限制,通過比較幾個(gè)常用的嵌入式操作系統(tǒng),最后選擇了 linux 操作系統(tǒng)。在該系統(tǒng)下,選用 C 程序設(shè)計(jì)語言,利用 linux 操作系統(tǒng)地系統(tǒng)函數(shù)庫和SOCKET 編程技術(shù),實(shí)現(xiàn) http 服務(wù)端的功能。</p><p>  最后,該項(xiàng)目的實(shí)際意義主要在于兩個(gè)方面的應(yīng)用,一個(gè)是監(jiān)視功能,用于在服務(wù)器端進(jìn)行某

5、項(xiàng)監(jiān)視任務(wù),使在客戶端的瀏覽器中的顯示監(jiān)視的信息,這樣</p><p>  能幫助用戶主動獲取信息。另一個(gè)是控制儀器設(shè)備。用戶可以通過執(zhí)行 CGI 程序或腳本語言,通過 Internet 獲得交互式信息,對其進(jìn)行遠(yuǎn)程控制。 </p><p>  關(guān)鍵詞:嵌入式系統(tǒng); 超文本傳輸協(xié)議; Linux; </p><p><b>  Abstract</

6、b></p><p>  With the development of the computer technology, embedded system technology has become an important part of the computer application. After the computer network technology and the embedded sys

7、tem technology combines, some protocols of the application layer in the internet network architecture can be translated into programs that run on the embedded devices. The thesis presents the design and implementation of

8、 part of the HTTP1.0 protocol based on embedded hardware and operation system. The serve</p><p>  First, the thesis introduces the choice and the realization of the embedded system hardware. Because the perf

9、ormance and complexion of the program of the HTTP server function is not too much, I chose Samsung’s S3C44B0X CPU that is based on ARM7TDMI among the many embedded CPU and the Ethernet controller chip of the system is RT

10、L8019AS.fortunately, UP-NETARM3000 experiment system based on ARM7 platform meets the need, which is made by universal pioneering Technology Co., LTD. </p><p>  Second, the embedded system realizes. Consider

11、ing the limited performance of the embedded system hardware, I finally choose µCLinux OS as the software platform by comparing several operation systems of current embedded system. I choose C programming language to

12、 program by use of the operation system functions and socket technology offered by µCLinux in order to realize the HTTP server function. </p><p>  Finally, the application of the project consists of two

13、 primary parts. One is monitoring function, that is, the information monitored by the HTTP server can be sent to the client that gets it by the browser; the other is remote controlling appliances and devices. Users can

14、control them remotely by running CGI programs or scripts language programs through the internet. </p><p>  Key words:Embedded system; HTTP protocol,; Linux</p><p><b>  目錄</b></p&

15、gt;<p>  第一章 嵌入式的基礎(chǔ)簡介...................................................1</p><p>  1.1嵌入式系統(tǒng)的歷史、現(xiàn)狀與發(fā)展........................................1</p><p>  1.2嵌入式系統(tǒng)概述..........................

16、...........................2</p><p>  1.3 Linux的主要特性...................................................4</p><p>  1.4嵌入式 Web 服務(wù)器..................................................5</p><

17、;p>  第二章 HTTP 協(xié)議簡介......................................................7</p><p>  2.1 HTTP 協(xié)議基礎(chǔ).....................................................7</p><p>  2.2 HTTP 協(xié)議的運(yùn)作過程...............

18、................................8</p><p>  2.3 HTTP 協(xié)議的工作模式及特點(diǎn).........................................10 </p><p>  第三章 HTTP 設(shè)計(jì)思想.....................................................11</p>

19、<p>  3.1系統(tǒng)總體設(shè)計(jì)......................................................11</p><p>  3.1.1系統(tǒng)的結(jié)構(gòu)圖說明............................................11</p><p>  3.1.2 功能分配...........................

20、........................12</p><p>  3.2詳細(xì)設(shè)計(jì)..........................................................12</p><p>  3.2.1主程序設(shè)計(jì)..................................................12</p><p&g

21、t;  3.2.2 客戶請求連接處理模塊設(shè)計(jì)...................................14</p><p>  3.2.3 客戶請求解析處理模塊設(shè)計(jì)...................................15</p><p>  3.2.4 發(fā)送 HTTP 協(xié)議數(shù)據(jù)頭模塊設(shè)計(jì)...............................16<

22、/p><p>  3.3 程序設(shè)計(jì)需求分析.................................................16</p><p>  第四章 程序?qū)崿F(xiàn)..........................................................19</p><p>  4.1主程序?qū)崿F(xiàn)的主要思想...........

23、...................................19</p><p>  4.2 幾個(gè)主要函數(shù)的名稱及相關(guān)參數(shù)說明.................................20</p><p>  4.3 系統(tǒng)程序(函數(shù))源碼..............................................21</p><p>

24、;  第五章 嵌入式Web服務(wù)器的實(shí)現(xiàn).............................................22</p><p>  5.1 Web服務(wù)器的模塊框圖..............................................22</p><p>  5.2介紹......................................。.

25、......................22</p><p>  第六章 測試與固化........................................................24</p><p>  6.1測試..............................................................24</p>&l

26、t;p>  6.2程序的固化階段....................................................24</p><p>  第七章 現(xiàn)實(shí)意義..........................................................26</p><p>  參考文獻(xiàn).............................

27、....................................29</p><p>  附錄.....................................................................30</p><p>  第一章 嵌入式的基礎(chǔ)簡介</p><p>  近年來嵌入式技術(shù)作為計(jì)算機(jī)科學(xué)與技術(shù)發(fā)展的一個(gè)新的分支,

28、發(fā)展非常迅速,應(yīng)用的前景被業(yè)內(nèi)人士非常看好。隨著Internet的普及,網(wǎng)絡(luò)在人們的日常生活和工作中扮演著越來越重要的角色, 已經(jīng)成為人們生活和工作中不可缺少的部分。[1] </p><p>  隨著嵌入式技術(shù)和Internet技術(shù)的發(fā)展與結(jié)合,嵌入式系統(tǒng)在互聯(lián)網(wǎng)方面的應(yīng)用越來越廣泛,由于嵌入式系統(tǒng)帶有網(wǎng)絡(luò)接口,把嵌入式系統(tǒng)設(shè)備掛接互聯(lián)網(wǎng)上,可以實(shí)現(xiàn)嵌入式設(shè)備系統(tǒng)的數(shù)據(jù)通過Internet實(shí)現(xiàn)共享, 這樣對于遠(yuǎn)端

29、的許多用戶就可以通過瀏覽器以網(wǎng)頁的形式和嵌入式設(shè)備進(jìn)行通訊, 從而實(shí)現(xiàn)各典型的基于X86的CPU的微型計(jì)算機(jī)和Linux操作系統(tǒng)下的web服務(wù)器技術(shù)已經(jīng)成熟。但由于Linux內(nèi)核龐大,而嵌入式系統(tǒng)的硬件資源(CPU和存儲器)遠(yuǎn)遠(yuǎn)比不上微型計(jì)算機(jī),因此,要把Linux操作系統(tǒng)裝入有限的內(nèi)存,就要對它進(jìn)行裁剪。對于內(nèi)存資源很寶貴的嵌入式系統(tǒng)來,設(shè)計(jì)一個(gè)嵌入式HTTP網(wǎng)絡(luò)服務(wù)器,用瀏覽器進(jìn)行訪問控制,在嵌入式網(wǎng)絡(luò)設(shè)備中的應(yīng)用將是非常有前景的。

30、為了實(shí)現(xiàn)嵌入式HTTP服務(wù)端的功能,采用基于ARM7TDMI 內(nèi)核的S3C44B0X CPU芯片,操作系統(tǒng)選用μCLinux來作為嵌入式操作系統(tǒng),利用μCLinux提供的庫函數(shù)及SOCKET編程技術(shù),依據(jù)采用軟件工程學(xué)的原理,來指導(dǎo)開發(fā)過程。</p><p>  目前用于Web頁面訪問的應(yīng)用都是基于HTTP(Hypertext Transfer Protocol)應(yīng)用協(xié)議的,它對于設(shè)計(jì)Web瀏覽器等應(yīng)用軟件是必須

31、需的。我們在嵌入式產(chǎn)品無線PDA(personal Digital Assistant)中為了實(shí)現(xiàn)嵌入式的瀏覽器,自行設(shè)計(jì)和實(shí)現(xiàn)了HTTP/1.1協(xié)議,為無線PDA提供訪問Web頁面提供了基本的支持。在設(shè)計(jì)和實(shí)現(xiàn)過程中,我們應(yīng)用了HTTP/1.1不同于HTTP/1.0之處,如可持續(xù)連接、緩存等減少了響應(yīng)時(shí)間,改善了無線網(wǎng)絡(luò)帶寬窄而帶來的延時(shí),同時(shí)也提高了嵌入式設(shè)備的資源利用,為嵌入式設(shè)備提供了較好的實(shí)現(xiàn)方案。</p>&l

32、t;p>  該項(xiàng)目的實(shí)際意義包括以下兩個(gè)方面的應(yīng)用,一個(gè)是監(jiān)視功能,用于在服務(wù)器端進(jìn)行某項(xiàng)監(jiān)視任務(wù),使在客戶端的瀏覽器中的顯示監(jiān)控的信息。它能幫助用戶主動獲取信息。另一個(gè)是控制儀器設(shè)備。用戶可以通過普通的 HTML 頁面,在任何時(shí)間、任何地方瀏覽電器設(shè)備的運(yùn)行狀態(tài),并可對其進(jìn)行遠(yuǎn)程控制,特別是通過 Internet 獲得交互式信息。</p><p>  1.1嵌入式系統(tǒng)的歷史、現(xiàn)狀與發(fā)展</p>

33、<p>  20 多年前,芬蘭赫爾辛基大學(xué)的一名名為Linus Torvalds的計(jì)算機(jī)業(yè)余愛好者設(shè)計(jì)了一個(gè)可以代替 Minix 的操作系統(tǒng),這個(gè)系統(tǒng)不但可以運(yùn)行在當(dāng)時(shí)最為流行的x86平臺的處理器,并且還具有Unix 所能實(shí)現(xiàn)的一切功能,這就是早期 Linux 的前身。1991 年的 9 月,它將第一個(gè) Linux 版本發(fā)布在網(wǎng)絡(luò)上,并在十個(gè)月以后發(fā)布了第二個(gè)版本,同時(shí),借助于網(wǎng)絡(luò),越來越多的計(jì)算機(jī)愛好者也加入了新版本開發(fā)

34、的行列,它們慢慢的成為了Linux 強(qiáng)大的技術(shù)支持力量,也就是當(dāng)今著名的 Linux 社區(qū)。到現(xiàn)在,Linux已經(jīng)發(fā)行了超過了30個(gè)版本,并且每三個(gè)月就會更新一個(gè)新版本,成為全世界最具影響力的操作系統(tǒng)之一?,F(xiàn)代社會信息化,智能化,網(wǎng)絡(luò)化發(fā)展迅速,嵌入式系統(tǒng)的發(fā)展空間也越來越大。從二十世紀(jì)九十年代起,嵌入式技術(shù)全面展開,發(fā)展到現(xiàn)在已成為通信,工業(yè)和消費(fèi)類產(chǎn)品不可轉(zhuǎn)變的共同發(fā)展方向。</p><p>  二十一世紀(jì)是

35、信息化的社會,互聯(lián)網(wǎng)的發(fā)展不可抑制,網(wǎng)絡(luò)化是提高生產(chǎn)效率,保證產(chǎn)品質(zhì)量,降低人工成本的有效方法。在工業(yè)工程控制,數(shù)字機(jī)床,電力系統(tǒng),電網(wǎng)安全,石油化工系統(tǒng)等方面的發(fā)展,就離不開嵌入式系統(tǒng),從老式的低端的八位單片機(jī)到如今以32 位,64 位處理器為核心的工業(yè)控制設(shè)備,足以讓我們明白目前工業(yè)設(shè)備的發(fā)展是以嵌入式系統(tǒng)的發(fā)展為前提的。尤其在數(shù)控技術(shù)中,嵌入式LINUX 數(shù)控系統(tǒng)完成了系統(tǒng)人機(jī)界面的開發(fā),利用C

36、60;語言完成了控制層面的開發(fā)?,F(xiàn)在一些大型商場中的自動售貨機(jī)早已進(jìn)入人們的視野,居民出行方便省錢的公交卡,隨處可見的智能ATM 終端,各種超市商場的會員卡,這些卡伴隨著嵌入式系統(tǒng)的發(fā)展在人們生活中發(fā)揮著越來越重要的作用,一卡在手走遍天下已不是遙不可及的夢想。</p><p>  嵌入式系統(tǒng)的市場是巨大的,嵌入式系統(tǒng)的應(yīng)用幾乎無處不在:移動通信、數(shù)字辦公、家電應(yīng)用、交通運(yùn)輸、互動娛樂等無不有它的蹤影。體

37、積小、可靠性高、功能強(qiáng)、靈活方便等嵌入控制器獨(dú)有的特點(diǎn)與優(yōu)勢,使其被廣泛運(yùn)用到教育、國防、工農(nóng)業(yè)、科學(xué)研究以及日常生活等各個(gè)領(lǐng)域,對各行各業(yè)的技術(shù)進(jìn)步、自動化發(fā)展、產(chǎn)品更換、提高生產(chǎn)率等方面起到了十分重要的促進(jìn)作用。 嵌入式系統(tǒng)作為人類青睞的系統(tǒng)工具,要想不被淘汰,只有吸引人們的目光,不斷進(jìn)步,給人類生活帶來便利,打開新的消費(fèi)市場,適應(yīng)快速發(fā)展的社會狀況。近幾年我國對物聯(lián)網(wǎng)行業(yè)發(fā)展的大力支持和相關(guān)產(chǎn)業(yè)發(fā)展的不斷推動,使得具有高

38、度智能化的電子產(chǎn)品的應(yīng)用范圍也因此而不斷的擴(kuò)大,從而使得更多的嵌入式產(chǎn)品也不斷的進(jìn)入到了我們?nèi)粘5纳a(chǎn)生活之中,這就標(biāo)志著嵌入式系統(tǒng)也進(jìn)入到了飛速發(fā)展的時(shí)期,其應(yīng)用的規(guī)模也隨之不斷的擴(kuò)大、在此種背景下,本文首先對當(dāng)前我國各行業(yè)對嵌入式系統(tǒng)的概念及應(yīng)用情況進(jìn)行簡單的介紹和講解,然后對嵌入式系統(tǒng)未來的發(fā)展趨勢進(jìn)行研究,進(jìn)而了解嵌入式系統(tǒng)在我國各行業(yè)的深入應(yīng)用。</p><p>  1.2嵌入式系統(tǒng)概述</p&g

39、t;<p>  什么是嵌入式系統(tǒng)嵌入式系統(tǒng)本身的定義比較模糊,小到、手機(jī)、智能、電子儀表等微型數(shù)字化產(chǎn)品,大到數(shù)字家電、車載衛(wèi)星定位器以及一些工業(yè)控制設(shè)備等都可以稱為嵌入式系統(tǒng)。根據(jù)國際電氣和電子工程師協(xié)會的定義嵌入式系統(tǒng)是“用于控制、監(jiān)視或者、輔助操作機(jī)器和設(shè)備的裝置”,國內(nèi)一般定義為“以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪,功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)?!鼻度胧较到y(tǒng)是電腦軟件與硬件的

40、綜合體。也可以涵蓋機(jī)械或其它的附屬裝置。硬件包括處理器微處理器、存儲器及外設(shè)器件</p><p>  和拍端口、圖形控制器等。軟件部分包括操作系統(tǒng)軟件要求實(shí)時(shí)和多任務(wù)操作和應(yīng)用程序編程。這種系統(tǒng)具有軟件代碼小,高度智能化,響應(yīng)速度快等特點(diǎn),特別適合于要求實(shí)時(shí)的和多任務(wù)的體系。有時(shí)設(shè)計(jì)人員把這兩種軟件組合在一起。應(yīng)用程序控制著系統(tǒng)的運(yùn)作和行為而操作系統(tǒng)控制著應(yīng)用程序編程與硬件的交互作用。整個(gè)綜合體設(shè)計(jì)的目的在于滿足

41、某種特殊功能??梢哉J(rèn)為凡是帶有微處理器的專用軟硬件系統(tǒng)都可以稱為嵌入式系統(tǒng)。</p><p>  圖1-1 HTTP/1.1協(xié)議的實(shí)現(xiàn)框架</p><p>  國際電氣和電子工程師協(xié)會(Institute of Electrical and Electronics Engineers,IEEE)曾給出了明確的定義:“用于控制、監(jiān)視或者輔助機(jī)器和設(shè)備操作的裝置”(Devices Used t

42、o Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。但隨著技術(shù)的發(fā)展,當(dāng)前則普遍認(rèn)為其定義應(yīng)為:依附計(jì)算機(jī)相關(guān)技術(shù)作為核心技術(shù),重在應(yīng)用,軟件與硬件可以根據(jù)需要裁減,靈活的適應(yīng)系統(tǒng)對體積、功耗,成本與可靠性的要求。一般來講,嵌入式系統(tǒng)由硬件層、中間層、軟件層三個(gè)方面組成,而被控對象或者系統(tǒng)的執(zhí)行機(jī)構(gòu)主要接收系統(tǒng)發(fā)來的控制指令,完成所規(guī)定的

43、任務(wù),最終實(shí)現(xiàn)嵌入式系統(tǒng)所預(yù)定的工作。 作為計(jì)算機(jī)系統(tǒng)技術(shù)的分支,嵌入式技術(shù)發(fā)展非常迅速,嵌入式控制器的應(yīng)用幾乎無處不在:手持終端設(shè)備、智能家電、汽車電子等都能找到它的蹤跡。由于其出色的性能,靈活的應(yīng)用方式,以及體積功耗理想等特點(diǎn),其對當(dāng)今社會生產(chǎn)生活產(chǎn)生的影響是不可估量的。</p><p>  1.3 Linux的主要特性 </p><p><b>  完全自由免費(fèi)</b

44、></p><p>  到目前為止,Linux仍然是一種絕對免費(fèi)的開放自由的操作系統(tǒng),所有的使用者都可以通過其官方網(wǎng)站方便的下載獲得其源碼。并可在沒有獲得許可的情況下任意的修改其源碼。這是其它操作系統(tǒng)所不可想象的。當(dāng)然,也正是由于這一優(yōu)勢,來自全球各地的數(shù)以萬計(jì)的程序員、操作系統(tǒng)愛好者參加了對Linux內(nèi)核的修改、編寫與設(shè)計(jì)工作,程序愛好者可以根據(jù)自己的興趣和靈感對其進(jìn)行修改。這不但讓Linux的內(nèi)核吸收了

45、無數(shù)程序員大量的的精華,還避免了版權(quán)等諸多紛爭風(fēng)險(xiǎn)的存在。</p><p>  完全兼容POSIX標(biāo)準(zhǔn)</p><p>  由于其支持 POSIX 標(biāo)準(zhǔn),這使得用戶可以在Linux下通過相應(yīng)的模擬器運(yùn)行其它操作系統(tǒng)下開發(fā)的程序,如 DOS、Windows 的程序。這為許多用戶從 Windows 操作系統(tǒng)過渡到 Linux 操作系統(tǒng)提供了保障。當(dāng)許多使用者在考慮Linux 操作系統(tǒng)時(shí),就不必

46、擔(dān)心早先在Windows 操作系統(tǒng)下開發(fā)過的程序是否能在 Linux 操作系統(tǒng)下正常運(yùn)行了,這也是 Linux 操作系統(tǒng)優(yōu)勢所在。 </p><p><b>  多用戶、多任務(wù)</b></p><p>  Linux 操作系統(tǒng)的另外一個(gè)特點(diǎn)就是對多用戶的支持,通常不同的用戶對于自己所使用的文件設(shè)備會有特殊的操作權(quán)利,為了保證各用戶之間在使用上互不影響,Linux 操作

47、系統(tǒng)采用了多用戶的設(shè)計(jì)模式。多任務(wù)則是現(xiàn)在計(jì)算機(jī)操作系統(tǒng)的最重要的一個(gè)特點(diǎn),Linux 操作系統(tǒng)可以使多個(gè)應(yīng)用程序同時(shí)運(yùn)行而相互之間沒有影響。 </p><p><b>  良好的界面</b></p><p>  Linux 操作系統(tǒng)不但帶有字符界面而且還具有圖形界面。在字符界面下,用戶可以通過輸入相應(yīng)的操作指令對計(jì)算機(jī)操作。它還同時(shí)提供了具有與Windows 操 作

48、系統(tǒng)的圖形界面非常相似的X-Window 圖形界面操作系統(tǒng),用戶除使用鍵盤外,還可以使用鼠標(biāo)對計(jì)算機(jī)實(shí)時(shí)操作。由于在 X-Window 系統(tǒng)環(huán)境中的操作就和在 Windows 操作系統(tǒng)中進(jìn)行操作非常相似,因此可以說 X-Window 操作系統(tǒng)是一個(gè) Linux 版的Windows 操作系統(tǒng)。 </p><p><b>  豐富的網(wǎng)絡(luò)功能</b></p><p>  由

49、于 Unix 操作系統(tǒng)是在互聯(lián)網(wǎng)的基礎(chǔ)上發(fā)展而來的,作為其繼承者,Linux 操作系統(tǒng)同樣具有強(qiáng)大的網(wǎng)絡(luò)功能。它的網(wǎng)絡(luò)功能與其系統(tǒng)內(nèi)核聯(lián)系非常緊密,因此,在網(wǎng)絡(luò)功能方面,Linux 操作系統(tǒng)明顯強(qiáng)于其它的操作系統(tǒng)。在 Linux 操作系統(tǒng)中,用戶可以輕松實(shí)現(xiàn)對網(wǎng)頁的瀏覽、傳輸各類文件、以及遠(yuǎn)程登陸計(jì)算機(jī)等網(wǎng)絡(luò)功能。另外基于其強(qiáng)大的網(wǎng)絡(luò)功能,Linux 操作系統(tǒng)通常用來作為服務(wù)器提供 WWW、FTP、E-Mail 等服務(wù)。 </p&

50、gt;<p>  高安全、可靠、穩(wěn)定性能</p><p>  Linux 操作系統(tǒng)采取了許多安全技術(shù)第二章 系統(tǒng)涉及到的關(guān)鍵技術(shù)措施,其中主要包括對用戶讀寫權(quán)限控制、審核跟蹤、嚴(yán)格的用戶授權(quán)機(jī)制,這些措施都為系統(tǒng)的安全提供了必要地保障。許多情況下,由于其出色的穩(wěn)定性,Linux 操作系統(tǒng)被作為網(wǎng)絡(luò)服務(wù)器使用。 </p><p><b>  支持多種平臺</b

51、></p><p>  目前,Linux 操作系統(tǒng)可以運(yùn)行非常多的硬件平臺之上,例如 x86、ARM,AVR 等架構(gòu)的處理器。另外 Linux 還是一種嵌入式操作系統(tǒng),它可以應(yīng)用在手機(jī)、數(shù)碼相機(jī)、電視機(jī)頂盒、游戲機(jī)等數(shù)碼設(shè)備上。2001 年 1 月開始發(fā)布的 Linux2.4 版內(nèi)核系統(tǒng)已經(jīng)實(shí)現(xiàn)了對 Intel 64 位芯片架構(gòu)的支持。同時(shí) Linux 操作系統(tǒng)還對多處理器具有很好的支持。當(dāng)系統(tǒng)采用多個(gè)處理

52、器同時(shí)工作時(shí),其性能將大大的提高。</p><p>  1.4嵌入式 Web 服務(wù)器</p><p>  通俗來講,Web服務(wù)器可以認(rèn)為是一種存在于因特網(wǎng)上某種特定類型的計(jì)算機(jī)應(yīng)用程序。當(dāng)有 Web 瀏覽器(客戶端)連接到 Web 服務(wù)器 IP 地址并請求訪問文件時(shí),Web 服務(wù)器便會把存放在本地計(jì)算機(jī)上的相關(guān)文件發(fā)送至來訪的瀏覽器,并通過附帶信息的方式告知瀏覽器如何瀏覽相關(guān)文件。目前,W

53、eb 服務(wù)器進(jìn)行文件通信時(shí)使用的是超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)。因此,也可稱其為 HTTP 服務(wù)器。除了存儲被訪問的數(shù)據(jù)文件之外,Web 服務(wù)器還可以與客戶端進(jìn)行交互,并運(yùn)行相關(guān)的腳本程序。這些程序或者腳本一般稱之為通用網(wǎng)關(guān)接口(Common Cateway Interface,CGI)。Web 服務(wù)器可駐留于各種類型的計(jì)算機(jī),從常見的 PC 機(jī)到巨型的 UNIX 網(wǎng)絡(luò)服務(wù)器,以及

54、其它各種類型的計(jì)算機(jī)。但在嵌入式系統(tǒng)中,由于資源有限,一般使用體積較小的 Web 服務(wù)器,其中多為單任務(wù)服務(wù)器,例如 Boa。系統(tǒng)中 Web 服務(wù)器采用的就是 Boa。</p><p>  通常是在遠(yuǎn)程機(jī)器上,負(fù)責(zé)對瀏覽器頁面請求作出響應(yīng),返回HTML編碼或類似的數(shù)據(jù)流。通俗的講,Web服務(wù)器傳送(serves)頁面使瀏覽器可以瀏覽,然而應(yīng)用程序服務(wù)器提供的是客戶端應(yīng)用程序可以調(diào)用(call)的方法(method

55、s)。確切一點(diǎn),你可以說:Web服務(wù)器專門處理HTTP請求(request),但是應(yīng)用程序服務(wù)器是通過很多協(xié)議來為應(yīng)用程序提供(serves)商業(yè)邏輯(business logic)。  </p><p>  隨著Internet技術(shù)的興起,在嵌入式設(shè)備的管理與交互中,基于Web方式的應(yīng)用成為目前的主流,這種程序結(jié)構(gòu)也就是大家非常熟悉的B/S結(jié)構(gòu),即在嵌入式設(shè)備上運(yùn)行一個(gè)支持腳本或C

56、GI功能的Web服務(wù)器,能夠生成動態(tài)頁面,在用戶端只需要通過Web瀏覽器就可以對嵌入式設(shè)備進(jìn)行管理和監(jiān)控,非常方便實(shí)用。</p><p>  第二章 HTTP 協(xié)議簡介</p><p>  2.1 HTTP 協(xié)議基礎(chǔ)</p><p>  Internet 使用的基本協(xié)議是 TCP/IP 協(xié)議,在 TCP/IP 協(xié)議模型最上層的是應(yīng)用層,它包含所有高層的協(xié)議。高層協(xié)議

57、有:文件傳輸協(xié)議 FTP、電子郵件傳輸協(xié)議 SMTP、域名系統(tǒng)服務(wù) DNS、網(wǎng)絡(luò)新聞傳輸協(xié)議 NNTP 和 HTTP 協(xié)議等。[2] </p><p>  HTTP(Hypertext Transfer Protocol)協(xié)議,即:超文本傳輸協(xié)議,是用于WWW 服務(wù)器與本地瀏覽器進(jìn)行超文本傳輸傳送的協(xié)議。它可以使瀏覽器與 Web 服務(wù)器通過互聯(lián)網(wǎng),更加高效使傳輸網(wǎng)絡(luò)信息,并使之成為標(biāo)準(zhǔn)化。它不僅保證計(jì)算機(jī)正確快速

58、地傳輸超文本文檔,還確定傳輸文檔中的哪一部分以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。 </p><p>  由于 HTTP 協(xié)議是基于請求/響應(yīng)范式的(相當(dāng)于客戶機(jī)/服務(wù)器)。一個(gè)客戶機(jī)與服務(wù)器建立連接后,發(fā)送一個(gè)請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)、協(xié)議版本號后邊是 MIME 信息包括請求修飾符、客戶機(jī)信息等內(nèi)容。</p><p>  服務(wù)器在接收到請求后,給予相

59、應(yīng)的響應(yīng)信息。其格式為:一個(gè)狀態(tài)行(包括信息的協(xié)議版本號、一個(gè)成功或錯(cuò)誤的代碼),后邊是 MIME 信息包括服務(wù)器信息、實(shí)體信息和其他的一些內(nèi)容。 </p><p>  許多 HTTP 通訊是由一個(gè)用戶代理初始化的,并且包括一個(gè)申請?jiān)谠捶?wù)器上資源的請求。最簡單的情況可能是在用戶代理和服務(wù)器之間通過一個(gè)單獨(dú)的連接來完成。在 Internet 上 HTTP 通訊經(jīng)常發(fā)生在 TCP/IP 連接之上。其缺省端口是 TC

60、P 協(xié)議的 80 端口,當(dāng)然,其它的端口也是可以使用的。但這并不預(yù)示著 HTTP協(xié)議在 Internet 或其它網(wǎng)絡(luò)的其它協(xié)議之上才能完成。HTTP 只預(yù)示著一個(gè)可靠的傳輸。 </p><p>  HTTP 協(xié)議的內(nèi)部操作過程大致如下,在 WWW 中“客戶”與“服務(wù)器”是一個(gè)相對的概念,只存在于一個(gè)特定的連接期間,即:某個(gè)計(jì)算機(jī)在某個(gè)連接中的可能是客戶機(jī),而在另一個(gè)連接中可能作為服務(wù)器?;?HTTP 協(xié)議的客戶

61、/服務(wù)器模式的信息交換過程它分四個(gè)過程:建立連接、發(fā)送請求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。</p><p>  其實(shí)簡單說,就是任何服務(wù)器除了包括 HTML 文件以外,還有一個(gè) HTTP 協(xié)議駐留程序用于響應(yīng)用戶請求。瀏覽器是 HTTP 協(xié)議客戶機(jī),當(dāng)瀏覽器向服務(wù)器發(fā)送請求,在瀏覽器中輸入了一個(gè)開始文件或點(diǎn)擊了一個(gè)超級鏈接時(shí),瀏覽器就向服務(wù)器發(fā)送了 HTTP 請求,此請求被送往由 IP 地址指定的 URL。駐留程序

62、接收到請求后,進(jìn)行必要的操作后回送所要求的文件。在這一過程中,在網(wǎng)絡(luò)上發(fā)送和接收的數(shù)據(jù)已經(jīng)被分成一個(gè)或多個(gè)數(shù)據(jù)包(packet),每個(gè)數(shù)據(jù)包包括:要傳送的數(shù)據(jù);控制信息(即告訴網(wǎng)絡(luò)怎樣處理數(shù)據(jù)包)。TCP/IP 協(xié)議決定了每個(gè)數(shù)據(jù)包的格式。 </p><p>  HTTP 請求和 HTTP 響應(yīng)都使用頭發(fā)送有關(guān) HTTP 協(xié)議消息的信息。頭由一系列行組成,每行都包含名稱,然后依次是冒號、空格、值。字段可按任何順序

63、排列。某些頭字段既能用于請求頭也能用于響應(yīng)頭,而另一些頭字段只能用于其中之一。許多請求頭字段都允許客戶端指定多個(gè)可接受的選項(xiàng),有時(shí)甚至可以對這些選項(xiàng)的首選項(xiàng)進(jìn)行排名,多個(gè)項(xiàng)以逗號分隔。所有請求行后面的內(nèi)容都是頭的一部分。緊接著頭之后是一個(gè)空行,表示頭已結(jié)束。Web 服務(wù)器可以通過多種方式響應(yīng)前一個(gè)請求。 </p><p>  2.2 HTTP 協(xié)議的運(yùn)作過程</p><p>  當(dāng)一個(gè)或多

64、個(gè)中介出現(xiàn)在請求/響應(yīng)鏈中時(shí),HTTP 協(xié)議的運(yùn)作情況就變得比較復(fù)雜。中介由三種:代理(Proxy)、網(wǎng)關(guān)(Gateway)和通道(Tunnel)。一個(gè)代理根據(jù) URL 的絕對格式來接受請求,重寫全部或部分消息,通過 URL 的標(biāo)識把已格式化過的請求發(fā)送到服務(wù)器。網(wǎng)關(guān)是一個(gè)接收代理,作為一些其它服務(wù)器的上層,并且如果必須的話,可以把請求翻譯給下層的服務(wù)器協(xié)議。一個(gè)通道作為不改變消息的兩個(gè)連接之間的中繼點(diǎn)。當(dāng)通訊需要通過一個(gè)中介(例如:防

65、火墻等)或者是中介不能識別消息的內(nèi)容時(shí),通道經(jīng)常被使用。 </p><p>  簡要介紹了 HTTP 協(xié)議的宏觀運(yùn)作方式,下面介紹一下 HTTP 協(xié)議的內(nèi)部操作過程。 </p><p>  首先,簡單介紹基于 HTTP 協(xié)議的客戶/服務(wù)器模式的信息交換過程,它分四個(gè)過程,建立連接、發(fā)送請求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。 </p><p>  在 WWW 中,“客戶”

66、與“服務(wù)器”是一個(gè)相對的概念,只存在于一個(gè)特定的連接期間,即在某個(gè)連接中的客戶在另一個(gè)連接中可能作為服務(wù)器。WWW 服務(wù)器運(yùn)行時(shí),一直在 TCP80 端口(WWW 的缺省端口)監(jiān)聽,等待連接的出現(xiàn)。下面,討論 HTTP 協(xié)議下客戶/服務(wù)器模式中信息交換的實(shí)現(xiàn)。 </p><p><b>  1.建立連接 </b></p><p>  連接的建立是通過申請?zhí)捉幼?S

67、ocket)實(shí)現(xiàn)的??蛻舸蜷_一個(gè)套接字并把它綁定在一個(gè)端口上,如果成功,就相當(dāng)于建立了一個(gè)虛擬文件。以后就可以在該虛擬文件上寫數(shù)據(jù)并通過網(wǎng)絡(luò)向外傳送。 </p><p><b>  2.發(fā)送請求 </b></p><p>  打開一個(gè)連接后,客戶機(jī)把請求消息送到服務(wù)器的特定端口上,完成提出請求動作。 </p><p>  HTTP/1.0

68、請求消息的格式為: </p><p>  請求消息=請求行(通用信息|請求頭|實(shí)體頭)CRLF[實(shí)體內(nèi)容] </p><p>  請求行=方法 請求 URL HTTP 版本號 CRLF </p><p>  方法=GET|HEAD|POST|擴(kuò)展方法 </p><p>  URL=協(xié)議名稱+宿主名+目錄與文件名 </p>

69、<p>  請求行中的方法描述指定資源中應(yīng)該執(zhí)行的動作,常用的方法有 GET、HEAD和 POST。不同的請求對象對應(yīng) GET 的結(jié)果是不同的,對應(yīng)關(guān)系如下: </p><p>  對象 GET 的結(jié)果 </p><p>  文件 文件的內(nèi)容 </p><p>  程序 該程序的執(zhí)行結(jié)果 </p&

70、gt;<p>  數(shù)據(jù)庫查詢 查詢結(jié)果 </p><p>  HEAD——要求服務(wù)器查找某對象的元信息,而不是對象本身。 </p><p>  POST——從客戶機(jī)向服務(wù)器傳送數(shù)據(jù),在要求服務(wù)器和 CGI 做進(jìn)一步處理時(shí)會用到 POST 方法。POST 主要用于發(fā)送 HTML 文本中 FORM 的內(nèi)容,讓 CGI 程序處理。</p><p>  

71、頭信息又稱為元信息,即信息的信息,利用元信息可以實(shí)現(xiàn)有條件的請求或應(yīng)答。 </p><p>  請求頭——告訴服務(wù)器怎樣解釋本次請求,主要包括用戶可以接受的數(shù)據(jù)類型、壓縮方法和語言等。 </p><p>  實(shí)體頭——實(shí)體信息類型、長度、壓縮方法、最后一次修改時(shí)間、數(shù)據(jù)有效期等。 </p><p>  實(shí)體——請求或應(yīng)答對象本身。 </p><p

72、>  3.發(fā)送響應(yīng) 服務(wù)器在處理完客戶的請求之后,要向客戶機(jī)發(fā)送響應(yīng)消息。 </p><p>  HTTP/1.0 的響應(yīng)消息格式如下: </p><p>  響應(yīng)消息=狀態(tài)行(通用信息頭|響應(yīng)頭|實(shí)體頭) CRLF 〔實(shí)體內(nèi)容〕 </p><p>  狀態(tài)行=HTTP 版本號 狀態(tài)碼 原因敘述 </p><p>  狀態(tài)碼

73、表示響應(yīng)類型 </p><p><b>  1×× 保留 </b></p><p>  2×× 表示請求成功地接收 </p><p>  3×× 為完成請求客戶需進(jìn)一步細(xì)化請求 </p><p>  4×× 客戶錯(cuò)誤 <

74、/p><p>  5×× 服務(wù)器錯(cuò)誤 </p><p>  響應(yīng)頭的信息包括:服務(wù)程序名,通知客戶請求的 URL 需要認(rèn)證,請求的資源何時(shí)能使用。 </p><p>  4.關(guān)閉連接 客戶和服務(wù)器雙方都可以通過關(guān)閉套接字來結(jié)束 TCP/IP 對話。 </p><p>  2.3 HTTP 協(xié)議的工作模式及特點(diǎn) <

75、/p><p>  HTTP 協(xié)議是一種用于分布式、合作式的多媒體信息系統(tǒng)的應(yīng)用層協(xié)議,它在 1990 年 WWW 全球信息剛剛起步的時(shí)候就得到了應(yīng)用。HTTP 協(xié)議是一種請求/響應(yīng)協(xié)議,在與主機(jī)建立連接后,客戶以請求方法、URI 和協(xié)議版本的形式向服務(wù)器發(fā)送請求,隨后是類 MIME 信息(包括請求修改,客戶信息和可能的正文內(nèi)容)。服務(wù)器用包括消息協(xié)議版本和一個(gè)成功或錯(cuò)誤代碼的狀態(tài)行進(jìn)行應(yīng)答,隨后也是類 MIME 信息

76、(包括服務(wù)器信息,實(shí)體維護(hù)信息和可能的實(shí)體內(nèi)容)。HTTP 通信通常發(fā)生在 TCP 連接上,雖然 TCP 是面向連接的傳輸層協(xié)議,但 HTTP 本身是一個(gè)無連接的協(xié)議,其無連接性表現(xiàn)在每一次請求和相應(yīng)完成后,該連接就自動斷開,解決此問題的方法可以通過在網(wǎng)頁中加入刷新機(jī)制,使網(wǎng)頁不斷請求連接服務(wù)器。HTTP 通信的默認(rèn)端口是 80,不過其它端口也可以使用。在互聯(lián)網(wǎng)或其他網(wǎng)絡(luò)上,這并不妨礙 HTTP 應(yīng)用在其他協(xié)議的頂端。僅僅期望可靠的傳輸

77、,任何能提供這種保證的協(xié)議都可以使用。在基于 HTTP 協(xié)議的客戶/服務(wù)器數(shù)據(jù)交換時(shí),當(dāng) HTTP 請求產(chǎn)生時(shí),就開始一次 HTTP 通信,過程如下:</p><p>  瀏覽器提取出 URL 中的主機(jī)后,向 DNS 發(fā)出請求,解析主機(jī)名的 IP 地址;</p><p>  DNS 解析地址并將結(jié)果返回給瀏覽器;</p><p>  瀏覽器向該地址請求建立 TCP

78、連接; </p><p>  瀏覽器發(fā)出請求報(bào)文; </p><p>  服務(wù)器向?yàn)g覽器發(fā)送響應(yīng)報(bào)文,并將指定數(shù)據(jù)發(fā)送給瀏覽器; </p><p><b>  斷開連接。</b></p><p><b>  第三章 設(shè)計(jì)思想</b></p><p><b>  3.

79、1系統(tǒng)總體設(shè)計(jì)</b></p><p>  通過軟件需求分析來確定軟件系統(tǒng)開發(fā)目標(biāo)、需求規(guī)格。總體設(shè)計(jì)的任務(wù)是解決怎么做,實(shí)現(xiàn)將需求規(guī)格轉(zhuǎn)換為體系結(jié)構(gòu)并劃分程序的模塊組成,以及模塊間的相互聯(lián)系。確定系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),即組成系統(tǒng)的元素、程序、文件文檔等,但是每一個(gè)物理元素仍然是黑盒子狀態(tài)。軟件結(jié)構(gòu)反映系統(tǒng)中模塊的相互調(diào)用關(guān)系:頂層模塊調(diào)用它的下層模塊以實(shí)現(xiàn)程序的完整功能,每個(gè)下層模塊再調(diào)用更下層的模塊,最

80、下層的模塊完成最具體的功能。當(dāng)數(shù)據(jù)流圖細(xì)化到適當(dāng)?shù)膶哟?,則可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu)。</p><p>  設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)通過模塊分解或合并審查,力求降低耦合提高內(nèi)聚。模塊的劃分要符合獨(dú)立性原則。模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因,應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡單并且和模塊的功能一致。詳細(xì)通訊過程見附錄。</p><p>  3.1.1系統(tǒng)的結(jié)構(gòu)圖說明<

81、;/p><p>  圖3-1 系統(tǒng)結(jié)構(gòu)圖</p><p>  主程序:服務(wù)端程序開始運(yùn)行時(shí),主進(jìn)程就創(chuàng)建一個(gè)套接口,并和主機(jī)地址及端口綁定到一起,隨后置為被動監(jiān)聽狀態(tài),等待客戶端連接請求的到來。一旦接收了一個(gè)連接,ACCEPT會返回一個(gè)新的套接口描述符,主進(jìn)程則創(chuàng)建一個(gè)新的子進(jìn)程來處理這個(gè)新的連接,這樣系統(tǒng)可以同時(shí)接受最多5個(gè)客戶端來的請求。建立TCP類型SOCKE在80端口進(jìn)行監(jiān)聽連接請求。

82、接收到連接請求將請求傳送給連接處理模塊處理。并繼續(xù)進(jìn)行監(jiān)聽。</p><p>  3.1.2 功能分配</p><p>  發(fā)送當(dāng)前目錄文件列表信息 </p><p>  將服務(wù)器當(dāng)前目錄下所有文件的信息發(fā)送給客戶端信息包括: 文件名、大小、日期。 </p><p>  發(fā)送 HTML 類型文件 </p><p>

83、  將客戶請求的 HTML 類型文件發(fā)送給客戶。 </p><p><b>  發(fā)送純文本文件 </b></p><p>  將客戶請求的純文本發(fā)送給客戶。 </p><p>  發(fā)送 JPG 圖像文件 </p><p>  將客戶請求的 JPG 圖像文件發(fā)送給客戶。 </p><p>  發(fā)送

84、 GIF 圖像文件 </p><p>  將客戶請求的 GIF 圖像文件發(fā)送給客戶。 </p><p>  解析客戶請求 HTTP 協(xié)議頭 </p><p>  分析客戶的請求包括: </p><p><b>  1. 空格處理 </b></p><p>  2. 解析客戶請求命令 </p&

85、gt;<p>  3. 解析客戶請求的資源名 </p><p>  4. 解析客戶請求的資源類型。 </p><p><b>  客戶連接處理 </b></p><p>  解析 Referrer 和 content_length 字段值并調(diào)用客戶請求解析函數(shù)。 </p><p>  發(fā)送 HTTP 協(xié)議數(shù)

86、據(jù)頭 </p><p>  根據(jù)發(fā)送文件類型發(fā)送相應(yīng)的 HTTP 協(xié)議頭信息。[3]</p><p><b>  3.2詳細(xì)設(shè)計(jì)</b></p><p>  3.2.1主程序設(shè)計(jì)</p><p>  功能說明:系統(tǒng)的總?cè)肟谝彩窍到y(tǒng)的主要控制函數(shù)。分別完成如下功能: </p><p><b&g

87、t;  建立環(huán)境設(shè)置。 </b></p><p>  設(shè)置信號處理方式。 </p><p>  建立偵聽 TCP 流方式 SOCKET 并綁定 80 端口。 </p><p>  建立連接偵聽及客戶連接處理調(diào)用主循環(huán)。 </p><p>  該系統(tǒng)基于TCP/ IP 的套接口通信,具體的消息處理遵循HTTP 協(xié)議,服務(wù)端程序的工作

88、狀態(tài)如下圖。 </p><p>  圖3-3 主程序流程圖</p><p>  圖3-2 主進(jìn)程與線程</p><p>  3.2.2 客戶請求連接處理模塊設(shè)計(jì)</p><p><b>  功能說明 </b></p><p>  當(dāng)用戶的請求達(dá)到 HTTP 服務(wù)端程序的時(shí)候,通過客戶連接處理模塊來

89、初步處理客戶的連接請求,并將請求信息傳遞給客戶請求解析函數(shù)處理。 </p><p><b>  算法描述: </b></p><p>  圖3-4 客戶請求連接處理模塊 N-S 盒圖</p><p>  3.2.3 客戶請求解析處理模塊設(shè)計(jì)</p><p><b>  功能說明 </b></p

90、><p>  用于解析客戶的請求并根據(jù)請求信息調(diào)用相應(yīng)的函數(shù)進(jìn)行請求處理。</p><p>  圖3-5 客戶請求解析處理模塊的流程圖</p><p>  3.2.4 發(fā)送 HTTP 協(xié)議數(shù)據(jù)頭模塊設(shè)計(jì)</p><p><b>  功能說明:</b></p><p>  根據(jù)客戶瀏覽器請求的不同參數(shù),

91、發(fā)送不同的 HTTP 協(xié)議頭信息。</p><p>  圖3-6 協(xié)議數(shù)據(jù)頭模塊的 N—S 盒圖</p><p>  至此,系統(tǒng)的軟件設(shè)計(jì)部分已經(jīng)完成,下一階段的工作就是根據(jù)系統(tǒng)的詳細(xì)設(shè)計(jì),實(shí)現(xiàn)各模塊的編程,以及將各個(gè)模塊組裝成一個(gè)完整的系統(tǒng)。</p><p>  3.3 程序設(shè)計(jì)需求分析</p><p>  嵌入式系統(tǒng)中服務(wù)器的實(shí)現(xiàn)方法主要

92、有兩種:目標(biāo)嵌入式系統(tǒng)設(shè)備使用嵌入式操作系統(tǒng)和目標(biāo)嵌入式系統(tǒng)設(shè)備不使用操作系統(tǒng)。本課題采用EOS的服務(wù)端功能的程序?qū)崿F(xiàn)。[4]</p><p>  在低端嵌入式設(shè)備上實(shí)現(xiàn) HTTP 服務(wù)端功能的程序,要根據(jù)該系統(tǒng)對 HTTP 服務(wù)的功能需求簡化 HTTP 協(xié)議的一些機(jī)制,在資源有限的情況下設(shè)計(jì)滿足需求的嵌入式 HTTP 服務(wù)端程序。</p><p>  圖3-7 嵌入式 HTTP 服務(wù)端

93、程序的原理</p><p>  需求分析的結(jié)果是系統(tǒng)開發(fā)的基礎(chǔ),關(guān)系到系統(tǒng)開發(fā)的整過過程,以及軟件的成敗和質(zhì)量。嵌入式系統(tǒng)的特點(diǎn)決定了系統(tǒng)在開發(fā)初期的需求分析過程中就要完成的任務(wù)在需求分析階段需要分析客戶需求,包括功能需求、數(shù)據(jù)流圖以及系統(tǒng)地?cái)?shù)據(jù)要求等。</p><p><b>  1、功能要求 </b></p><p> ?、僭谇度胧较到y(tǒng)中實(shí)

94、現(xiàn) HTTP(服務(wù)端)的程序,在客戶端向服務(wù)端發(fā)出請求,時(shí)將服務(wù)器當(dāng)前目錄下所有文件的信息發(fā)送給客戶端信息包括:</p><p>  文件名、大小、日期; </p><p> ?、讷@取指定的文件,并解析文件類型(HTML、TXT、JPG、GIF 等文件); </p><p> ?、垌憫?yīng)客戶端程序的要求,析客戶的請求將請求信息解析為幾個(gè)變量包括:請求的命令、請求的文件

95、名、請求的文件類型。 </p><p>  2、系統(tǒng)的數(shù)據(jù)流分析——數(shù)據(jù)流圖(Data Flow Diagram,簡稱 DFD) </p><p>  圖3-8 系統(tǒng)數(shù)據(jù)流圖</p><p><b>  、</b></p><p><b>  第四章 程序?qū)崿F(xiàn)</b></p><

96、p>  4.1主程序?qū)崿F(xiàn)的主要思想</p><p>  主進(jìn)程(HTTP服務(wù)端程序)開始運(yùn)行時(shí),主進(jìn)程就創(chuàng)建一個(gè)套接口,并和主機(jī)地址綁定到一起,隨后置為被動監(jiān)聽狀態(tài),等待客戶端連接請求的到來。一旦接收了一個(gè)連接,ACCEPT 會返回一個(gè)新的套接口描述符,[5]主進(jìn)程則開辟一個(gè)新的子進(jìn)程來處理這個(gè)新的連接,這樣系統(tǒng)可以同時(shí)接受多個(gè)客戶端來的請求。 </p><p><b> 

97、 具體如下: </b></p><p>  int socket (int family ,int type ,int protocol); </p><p>  family:一般為 AF_INET,代表 Internet(TCP/IP)地址族; </p><p>  type:參數(shù)指定 socket 的類型:SOCK_STREAM 或 SOCK_DG

98、RAM; </p><p>  protocol:通常賦值"0"。該函數(shù)用來創(chuàng)建一個(gè)套接口, 并返回一個(gè)短整數(shù)的套接口描述符,可以在后面的程序中調(diào)用使用它。 </p><p>  Socket 描述符是一個(gè)指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針,它指向描述符表入口。調(diào)用 Socket 函數(shù)時(shí),socket 執(zhí)行體將建立一個(gè) Socket,實(shí)際上“建立一個(gè) Socket”意味著為一個(gè) S

99、ocket 數(shù)據(jù)結(jié)構(gòu)分配存儲空間。Socket 執(zhí)行體為你管理描述符表。 </p><p>  Bind 函數(shù)將 socket 與本機(jī)上的一個(gè)端口相關(guān)聯(lián),隨后可以在該端口監(jiān)聽服務(wù)請求。Bind 函數(shù)原型為: </p><p>  int bind(int sockfd,struct sockaddr *my_addr, int addrlen); </p><p&g

100、t;  Sockfd是調(diào)用socket函數(shù)返回的socket描述符,my_addr是一個(gè)指向包含有本機(jī)IP地址及端口號等信息的sockaddr類型的指針;addrlen常被設(shè)置為sizeof(struct sockaddr)。Bind()函數(shù)在成功被調(diào)用時(shí)返回0;出現(xiàn)錯(cuò)誤時(shí)返回"-1"并將errno置為相應(yīng)的錯(cuò)誤號。 </p><p>  Listen 函數(shù)使 socket 處于被動的監(jiān)聽模式

101、,并為該 socket 建立一個(gè)輸入數(shù)據(jù)隊(duì)列,將到達(dá)的服務(wù)請求保存在此隊(duì)列中,直到程序處理它們。</p><p>  int listen(int sockfd, int backlog); </p><p>  Sockfd 是 Socket 系統(tǒng)調(diào)用返回的 socket 描述符;backlog 指定在請求隊(duì)列中允許的最大請求數(shù),進(jìn)入的連接請求將在隊(duì)列中等待 accept()它們。Ba

102、cklog對隊(duì)列中等待服務(wù)的請求的數(shù)目進(jìn)行了限制,大多數(shù)系統(tǒng)缺省值為 20。如果一個(gè)服務(wù)請求到來時(shí),輸入隊(duì)列已滿,該 socket 將拒絕連接請求,客戶將收到一個(gè)出錯(cuò)信息。當(dāng)出現(xiàn)錯(cuò)誤時(shí) listen 函數(shù)返回-1,并置相應(yīng)的 errno 錯(cuò)誤碼。 </p><p>  accept()函數(shù)讓服務(wù)器接收客戶的連接請求。在建立好輸入隊(duì)列后,服務(wù)器就調(diào)用 accept 函數(shù),然后睡眠并等待客戶的連接請求。 <

103、/p><p>  int accept(int sockfd, void *addr, int *addrlen); </p><p>  sockfd 是被監(jiān)聽的 socket 描述符,addr 通常是一個(gè)指向 sockaddr_in 變量的指針,該變量用來存放提出連接請求服務(wù)的主機(jī)的信息(某臺主機(jī)從某個(gè)端口發(fā)出該請求);addrten 通常為一個(gè)指向值為 sizeof(struct so

104、ckaddr_in)的整型指針變量。出現(xiàn)錯(cuò)誤時(shí) accept 函數(shù)返回-1 并置相應(yīng)的 errno 值。 </p><p>  當(dāng) accept 函數(shù)監(jiān)視的 socket 收到連接請求時(shí),socket 執(zhí)行體將建立一個(gè)新的 socket,執(zhí)行體將這個(gè)新 socket 和請求連接進(jìn)程的地址聯(lián)系起來,收到服務(wù)請求的初始 socket 仍可以繼續(xù)在以前的 socket 上監(jiān)聽,同時(shí)可以在新的socket 描述符上進(jìn)行

105、數(shù)據(jù)傳輸操作。 </p><p>  線程:用來處理每個(gè)具體請求,線程中主要由幾個(gè)處理模塊組成:通用函數(shù)模塊、靜態(tài)文本處理模塊、CGI 模塊和出錯(cuò)處理。</p><p>  4.2 幾個(gè)主要函數(shù)的名稱及相關(guān)參數(shù)說明</p><p><b>  Copy 函數(shù) </b></p><p>  函數(shù)名: int copy(F

106、ILE *read_f, FILE *write_f) </p><p>  參數(shù) 1:文件流 FILE 結(jié)構(gòu)指針用于表示讀文件流指針。 </p><p>  參數(shù) 2:文件流 FILE 結(jié)構(gòu)指針用于表示寫文件流指針。 </p><p><b>  客戶連接處理 </b></p><p>  函數(shù)名:int Handle

107、 Connect(int fd) </p><p>  參數(shù):客戶連接文件描述字 </p><p><b>  解析客戶請求 </b></p><p>  函數(shù)名:int Parse Cli Req(FILE *file_pointer, char *r) HTTP </p><p>  參數(shù) 1:文件流 FILE 結(jié)構(gòu)

108、指針用于表示客戶連接的文件流指針。 </p><p>  參數(shù) 2:字符串指針待解析的字符串。 </p><p>  發(fā)送 HTTP 協(xié)議數(shù)據(jù)頭 </p><p>  函數(shù)名:int Send Header(FILE *file_pointer, int content_type) </p><p>  參數(shù) 1:文件流 FILE 結(jié)構(gòu)指針用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論