




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)劃類別 項(xiàng)目編號(hào) 項(xiàng)目技術(shù)報(bào)告課題名稱 項(xiàng)目主持人 承擔(dān)單位 題目:簡(jiǎn)單HTTP Server的設(shè)計(jì)與實(shí)現(xiàn)超文本傳輸協(xié)議(HTTP)是分布式、協(xié)作和超媒體信息系統(tǒng)的應(yīng)用協(xié)議。HTTP Server是一個(gè)監(jiān)聽特定端口TPC連接,對(duì)客戶端請(qǐng)求進(jìn)行處理的一個(gè)應(yīng)用。得益于高級(jí)語言對(duì)HTTP協(xié)議的內(nèi)置支持,我們也可以使用簡(jiǎn)單的方式來實(shí)現(xiàn)一個(gè)較完整功能的HTTP Server。本文主要是研究一個(gè)HTTP Server的簡(jiǎn)單實(shí)現(xiàn),在實(shí)現(xiàn)的過程中,能夠體現(xiàn)出POST、GET方法,現(xiàn)已將要求完成,本文一共分為三個(gè)章節(jié),分別對(duì)于此次設(shè)計(jì)進(jìn)行闡述。關(guān)鍵詞:超文本傳輸協(xié)議服務(wù);萬維網(wǎng);外部應(yīng)用程序1 引言(Intr
2、oduction)CGI是WWW技術(shù)中最重要的技術(shù)之一,有著不可替代的重要地位。CGI是外部應(yīng)用程序(CGI程序)與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和Web服務(wù)器之間傳遞信息的規(guī)程1。CGI規(guī)范允許Web服務(wù)器執(zhí)行外部程序,并將它們的輸出發(fā)送給Web瀏覽器,CGI將Web的一組簡(jiǎn)單的靜態(tài)超媒體文檔變成一個(gè)完整的新的交互式媒體。使在網(wǎng)絡(luò)服務(wù)器下運(yùn)行外部分應(yīng)用程序(或網(wǎng)關(guān))成為可能。CGI-BIN目錄是存放CGI腳本的地方。這些腳本使Web服務(wù)器和瀏覽器能運(yùn)行外部程序,而無需啟動(dòng)另一個(gè)程序2。2 項(xiàng)目背景(The project background)在HTTP中定義了很多和服務(wù)器之間進(jìn)
3、行交互的方法,例如平時(shí)我們所看到的GET、POST、PUT、DELETE3,4。其中資源描述符是URL,在這里我們可以這樣理解,一個(gè)URL地址可以描述一個(gè)網(wǎng)絡(luò)上的資源,而前面所提到的HTTP中的,GET、POST、PUT、DELETE所對(duì)應(yīng)的分別是這個(gè)資源的查、改、增、刪四個(gè)操作,而這其中的POST一般適用于資源信息的更新,GET用于信息的獲取/查詢,因?yàn)樵缙诘南到y(tǒng)對(duì)于DELETE是不支持的,所以說PUT和DELETE用的比較少。POST方法是HTTP中的一個(gè)重要的組成部分,這種方法一般是用來項(xiàng)目的服務(wù)器發(fā)出更新請(qǐng)求,在請(qǐng)求中附有請(qǐng)求實(shí)體5。在客戶機(jī)和服務(wù)器之間進(jìn)行請(qǐng)求-響應(yīng)時(shí),這兩種方法是最
4、常被用到的。POST:向指定的資源提交要被處理的數(shù)據(jù),采用這種方法,查詢查詢字符串(名稱/值對(duì))是在POST請(qǐng)求的HTTP消息主體中發(fā)送的。GET:從指定的資源請(qǐng)求數(shù)據(jù),采用這種方法查詢字符串(名稱/值對(duì))是在GET請(qǐng)求的URL中發(fā)送的6,7。除以上介紹的內(nèi)容之外,這兩種方法在安全性等方面也有一定的區(qū)別,表1列出了兩種方法在具體項(xiàng)目上的區(qū)別。3 具體實(shí)現(xiàn)(Implementation)實(shí)現(xiàn)HTTP Server的簡(jiǎn)單設(shè)計(jì)有多種語言可以選擇,但是本文采取的是Python語言進(jìn)行設(shè)計(jì)。Python是一種代表簡(jiǎn)單主義思想的語言8。它的底層是用C語言寫的,很多標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)也都是用C寫的,運(yùn)行速度非
5、常快,無需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)9。3.1 代碼編寫程序的代碼編寫主要包括post、get方法實(shí)現(xiàn),以及服務(wù)器的建立,其中在代碼編寫的過程中,post和get的體系基本相同,所以這里只介紹get的方法,post就不再進(jìn)行贅述,其中g(shù)et的代碼思路主要是首先從cgi中將存儲(chǔ)的數(shù)據(jù)調(diào)到form中,接著取出字段名是name的字段,取出字段名是comment的字段,最后打印html,并且加入name comment。除了get、post的編寫之外還有服務(wù)器的建立,大體思路是重寫http server類,然后獲得cgi句柄,接著設(shè)置cgi腳本路徑,最后是監(jiān)聽端口的死循環(huán)。以上是
6、簡(jiǎn)單的介紹一下程序代碼的思路,為了代碼編寫過程中能夠更加的簡(jiǎn)潔一些,才會(huì)采用Python這種編程語言,下面附上代碼的截圖以及代碼的注釋,以下兩個(gè)圖分別是get和服務(wù)器創(chuàng)建的代碼及注釋,post的不再進(jìn)行重復(fù)。3.2 軟件實(shí)現(xiàn)建立在理解以上概念的基礎(chǔ)之上,接下來對(duì)于此項(xiàng)目進(jìn)行具體的實(shí)現(xiàn),在創(chuàng)建項(xiàng)目的時(shí)候采用的Python語言,首先介紹一下程序?qū)崿F(xiàn)的流程,程序運(yùn)行開始之后,要建立一個(gè)服務(wù)器,然后創(chuàng)建監(jiān)聽端口,接下來用戶會(huì)發(fā)送一個(gè)請(qǐng)求,在接收到用戶的請(qǐng)求之后,要對(duì)用戶的請(qǐng)求類型進(jìn)行判斷,因?yàn)樵贖TTP中定義了很多和服務(wù)器之間進(jìn)行交互的方法,如前面提到的GET、POST、PUT、DELETE,但是由于
7、此次項(xiàng)目只是針對(duì)GET、POST方法的實(shí)現(xiàn)進(jìn)行設(shè)計(jì),所以說PUT、DELETE在這里不做考慮。判斷用戶的類型之后,要對(duì)用戶的要求進(jìn)行處理,例如,用戶的請(qǐng)求類型是POST,那么接下來要在CGI-BIN中找到相對(duì)應(yīng)的腳本,找到腳本之后,對(duì)請(qǐng)求進(jìn)行處理,并且將數(shù)據(jù)返回到監(jiān)聽端口,GET類型的流程和POST是一樣的,因?yàn)闆]有涉及DELETE和PUT方法,所以如果用戶的要求是屬于這兩種類型的話,那么將不做任何處理,直接返回到監(jiān)聽端口10。如圖3所示是程序?qū)崿F(xiàn)過程中的流程圖,程序的流程圖主要分為兩個(gè)部分,一個(gè)是主程序的流程圖,另外一個(gè)是在進(jìn)行判斷是后的流程圖。圖3所顯示的是該程序的主程序流程圖,表現(xiàn)了不管
8、采用的是什么樣的方法,都是按照這樣的流程進(jìn)行,但是正如前面所說的那樣,這個(gè)程序在處理用戶請(qǐng)求的時(shí)候認(rèn)可的是POST和GET兩種方法,所以說當(dāng)用戶的請(qǐng)求是DELETE或者是PUT的時(shí)候,程序是不會(huì)進(jìn)行數(shù)據(jù)處理的,如圖4所示請(qǐng)求類型判斷時(shí)候的具體方法。4 結(jié)論(Conclusion)在這篇文章中,我們討論實(shí)現(xiàn)HTTP Server的一些方法,并分析了其優(yōu)缺點(diǎn)。經(jīng)過對(duì)比,我們針對(duì)GET和POST方法進(jìn)行了設(shè)計(jì)。并使用Python語言編寫腳本,對(duì)程序進(jìn)行測(cè)試,最終實(shí)現(xiàn)簡(jiǎn)單HTTP Server的設(shè)計(jì)。 參考文獻(xiàn)(References)1 Huang B,Lin H.A Java/CGI Approac
9、h to Developing a Geographic Virtual Reality Toolkit on the InternetJ.Computers & Geosciences,2002,28(1):13-19.2 Min B,Nahm E,Kim H.An analytic Model of an HTTPServerJ.Journal of the Electrochemical Society,2002,140(140):1080-1085.3 Laliberte D,Hamilton M.Experimental HTTP Methods to Support Indexin
10、g and SearchingJ.Journal of Biomolecular Structure & Dynamics,1996,1(6):1543-1546.4 Demiryurek U,Shahabi C,Banaei-Kashani F.Efficient K-nearest Neighbor Search in Time-Dependent Spatial Networks:US8566030P.2013.5 劉一峰,劉冰,郭良動(dòng).抓取HTTP協(xié)議POST文本數(shù)據(jù)方法設(shè)計(jì)J.中國(guó)科技信息,2016(18):26-27.6 杜雷,辛陽.基于規(guī)則庫(kù)和網(wǎng)絡(luò)爬蟲的漏洞檢測(cè)技術(shù)研究與實(shí)現(xiàn)J.信息網(wǎng)絡(luò)安全,2014(10):38-43.7 齊紅心.PHP開發(fā)過程中頁(yè)面參數(shù)傳遞方法分析J.軟件導(dǎo)刊,2016,15(1):6-9.8 Salvatier J,Wiecki T,F(xiàn)onnesbeck C.Probabilist
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微專題18 圓錐曲線經(jīng)典難題之一類交點(diǎn)軌跡問題的通性通法研究 -2025年新高考數(shù)學(xué)二輪復(fù)習(xí)微專題提分突破140分方案
- 2025年福建省建筑安全員《B證》考試題庫(kù)及答案
- 2025年度物流運(yùn)輸企業(yè)員工薪資及運(yùn)輸量提成協(xié)議
- 2025年度城市基礎(chǔ)設(shè)施建設(shè)債權(quán)轉(zhuǎn)讓與融資合同
- 2025年度商鋪轉(zhuǎn)讓三方合同附帶品牌授權(quán)與培訓(xùn)支持
- 2025年度石料場(chǎng)生產(chǎn)承包環(huán)境保護(hù)與修復(fù)責(zé)任合同
- 2025年度教育培訓(xùn)機(jī)構(gòu)兼職正式聘用教學(xué)合同
- 2025年度購(gòu)房合同解除補(bǔ)償協(xié)議范文
- 2025年度農(nóng)村出租房租賃與農(nóng)村養(yǎng)老服務(wù)業(yè)合作合同
- 二零二五年度股權(quán)代持協(xié)議書:文化娛樂股權(quán)代持與IP開發(fā)合作合同
- 2024年青島港灣職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫(kù)含答案解析
- 《信息技術(shù)(拓展模塊)》高職全套教學(xué)課件
- 環(huán)保行業(yè)環(huán)保管理制度環(huán)保責(zé)任落實(shí)制度
- 2025年山東菏投建設(shè)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 市政質(zhì)量員繼續(xù)教育考試題庫(kù)集(含答案)
- 售后工程師述職報(bào)告
- 《公司法完整版》課件2024
- 2024年下半年信息系統(tǒng)項(xiàng)目管理師真題及答案
- ??低曤娏π袠I(yè)系統(tǒng)解決方案
- 2024-2030年中國(guó)街舞培訓(xùn)行業(yè)發(fā)展趨勢(shì)及競(jìng)爭(zhēng)格局分析報(bào)告
- 期末練習(xí)卷(模擬試題)-2024-2025學(xué)年 一年級(jí)上冊(cè)數(shù)學(xué)人教版
評(píng)論
0/150
提交評(píng)論