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

簡(jiǎn)單HTTP Server的設(shè)計(jì)與實(shí)現(xiàn)

2017-03-22 12:39:23周暢王賾
軟件工程 2017年1期

周暢 王賾

摘 要:超文本傳輸協(xié)議(HTTP)是分布式、協(xié)作和超媒體信息系統(tǒng)的應(yīng)用協(xié)議。HTTP Server是一個(gè)監(jiān)聽特定端口TPC連接,對(duì)客戶端請(qǐng)求進(jìn)行處理的一個(gè)應(yīng)用。得益于高級(jí)語(yǔ)言對(duì)HTTP協(xié)議的內(nèi)置支持,我們也可以使用簡(jiǎn)單的方式來(lái)實(shí)現(xiàn)一個(gè)較完整功能的HTTP Server。本文主要是研究一個(gè)HTTP Server的簡(jiǎn)單實(shí)現(xiàn),在實(shí)現(xiàn)的過(guò)程中,能夠體現(xiàn)出POST、GET方法,現(xiàn)已將要求完成,本文一共分為三個(gè)章節(jié),分別對(duì)于此次設(shè)計(jì)進(jìn)行闡述。

關(guān)鍵詞:超文本傳輸協(xié)議服務(wù);萬(wàn)維網(wǎng);外部應(yīng)用程序

中圖分類號(hào):TP393.0 文獻(xiàn)標(biāo)識(shí)碼:A

1 引言(Introduction)

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)行外部程序,而無(wú)需啟動(dòng)另一個(gè)程序[2]。

2 項(xiàng)目背景(The project background)

在HTTP中定義了很多和服務(wù)器之間進(jìn)行交互的方法,例如平時(shí)我們所看到的GET、POST、PUT、DELETE[3,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是不支持的,所以說(shuō)PUT和DELETE用的比較少。

POST方法是HTTP中的一個(gè)重要的組成部分,這種方法一般是用來(lái)項(xiàng)目的服務(wù)器發(fā)出更新請(qǐng)求,在請(qǐng)求中附有請(qǐng)求實(shí)體[5]。

在客戶機(jī)和服務(wù)器之間進(jìn)行請(qǐng)求-響應(yīng)時(shí),這兩種方法是最常被用到的。

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ì)有多種語(yǔ)言可以選擇,但是本文采取的是Python語(yǔ)言進(jìn)行設(shè)計(jì)。Python是一種代表簡(jiǎn)單主義思想的語(yǔ)言[8]。它的底層是用C語(yǔ)言寫的,很多標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)也都是用C寫的,運(yùn)行速度非常快,無(wú)需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)[9]。

3.1 代碼編寫

程序的代碼編寫主要包括post、get方法實(shí)現(xiàn),以及服務(wù)器的建立,其中在代碼編寫的過(guò)程中,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)。

以上是簡(jiǎn)單的介紹一下程序代碼的思路,為了代碼編寫過(guò)程中能夠更加的簡(jiǎn)潔一些,才會(huì)采用Python這種編程語(yǔ)言,下面附上代碼的截圖以及代碼的注釋,以下兩個(gè)圖分別是get和服務(wù)器創(chuàng)建的代碼及注釋,post的不再進(jìn)行重復(fù)。

3.2 軟件實(shí)現(xiàn)

建立在理解以上概念的基礎(chǔ)之上,接下來(lái)對(duì)于此項(xiàng)目進(jìn)行具體的實(shí)現(xiàn),在創(chuàng)建項(xiàng)目的時(shí)候采用的Python語(yǔ)言,首先介紹一下程序?qū)崿F(xiàn)的流程,程序運(yùn)行開始之后,要建立一個(gè)服務(wù)器,然后創(chuàng)建監(jiān)聽端口,接下來(lái)用戶會(huì)發(fā)送一個(gè)請(qǐng)求,在接收到用戶的請(qǐng)求之后,要對(duì)用戶的請(qǐng)求類型進(jìn)行判斷,因?yàn)樵贖TTP中定義了很多和服務(wù)器之間進(jìn)行交互的方法,如前面提到的GET、POST、PUT、DELETE,但是由于此次項(xiàng)目只是針對(duì)GET、POST方法的實(shí)現(xiàn)進(jìn)行設(shè)計(jì),所以說(shuō)PUT、DELETE在這里不做考慮。

判斷用戶的類型之后,要對(duì)用戶的要求進(jìn)行處理,例如,用戶的請(qǐng)求類型是POST,那么接下來(lái)要在CGI-BIN中找到相對(duì)應(yīng)的腳本,找到腳本之后,對(duì)請(qǐng)求進(jìn)行處理,并且將數(shù)據(jù)返回到監(jiān)聽端口,GET類型的流程和POST是一樣的,因?yàn)闆](méi)有涉及DELETE和PUT方法,所以如果用戶的要求是屬于這兩種類型的話,那么將不做任何處理,直接返回到監(jiān)聽端口[10]。

如圖3所示是程序?qū)崿F(xiàn)過(guò)程中的流程圖,程序的流程圖主要分為兩個(gè)部分,一個(gè)是主程序的流程圖,另外一個(gè)是在進(jìn)行判斷是后的流程圖。

圖3所顯示的是該程序的主程序流程圖,表現(xiàn)了不管采用的是什么樣的方法,都是按照這樣的流程進(jìn)行,但是正如前面所說(shuō)的那樣,這個(gè)程序在處理用戶請(qǐng)求的時(shí)候認(rèn)可的是POST和GET兩種方法,所以說(shuō)當(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)過(guò)對(duì)比,我們針對(duì)GET和POST方法進(jìn)行了設(shè)計(jì)。并使用Python語(yǔ)言編寫腳本,對(duì)程序進(jìn)行測(cè)試,最終實(shí)現(xiàn)簡(jiǎn)單HTTP Server的設(shè)計(jì)。

參考文獻(xiàn)(References)

[1] Huang B,Lin H.A Java/CGI Approach to Developing a Geographic Virtual Reality Toolkit on the Internet[J].Computers & Geosciences,2002,28(1):13-19.

[2] Min B,Nahm E,Kim H.An analytic Model of an HTTP

Server[J].Journal of the Electrochemical Society,2002,140(140):1080-1085.

[3] Laliberte D,Hamilton M.Experimental HTTP Methods to Support Indexing and Searching[J].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:US8566030[P].2013.

[5] 劉一峰,劉冰,郭良動(dòng).抓取HTTP協(xié)議POST文本數(shù)據(jù)方法設(shè)計(jì)[J].中國(guó)科技信息,2016(18):26-27.

[6] 杜雷,辛陽(yáng).基于規(guī)則庫(kù)和網(wǎng)絡(luò)爬蟲的漏洞檢測(cè)技術(shù)研究與實(shí)現(xiàn)[J].信息網(wǎng)絡(luò)安全,2014(10):38-43.

[7] 齊紅心.PHP開發(fā)過(guò)程中頁(yè)面參數(shù)傳遞方法分析[J].軟件導(dǎo)刊,2016,15(1):6-9.

[8] Salvatier J,Wiecki T,F(xiàn)onnesbeck C.Probabilistic Programming in Python using PyMC[J].Statistics,2015.

[9] Perkel J M.Programming:Pick up Python[J].Nature,2015,

518(7537):125-126.

[10] 狄剛.HTTP實(shí)現(xiàn)代理服務(wù)器及緩存替換算法的研究[D].吉

林大學(xué),2010.

作者簡(jiǎn)介:

周 暢(1993-),女,碩士生.研究領(lǐng)域:網(wǎng)絡(luò)安全.

王 賾(1976-),男,博士,副教授.研究領(lǐng)域:網(wǎng)絡(luò)安全.

主站蜘蛛池模板: 久草美女视频| 香蕉伊思人视频| 真实国产精品vr专区| 久草网视频在线| 尤物国产在线| 国产免费福利网站| 国产亚洲精品资源在线26u| 亚洲中文字幕在线一区播放| 国产91高跟丝袜| 青青青视频免费一区二区| AV不卡无码免费一区二区三区| 欧美日韩中文国产| 无码精品国产dvd在线观看9久| 国产福利拍拍拍| 国产丝袜第一页| 国产男女免费视频| 国产91av在线| 欧美国产日本高清不卡| 伊人五月丁香综合AⅤ| 日韩成人午夜| 亚洲二区视频| 欧美成人午夜在线全部免费| 一本大道东京热无码av| 国产精品一区二区在线播放| 亚洲国产成人无码AV在线影院L | 亚洲成人一区二区三区| 在线播放国产一区| 亚洲欧美日韩精品专区| 91精品国产91久无码网站| 五月婷婷亚洲综合| 日韩在线观看网站| 国产视频资源在线观看| 红杏AV在线无码| 国产国产人成免费视频77777| 亚洲色图狠狠干| 色欲色欲久久综合网| 91在线视频福利| 99热这里只有精品在线播放| 五月天综合婷婷| 亚洲精品成人7777在线观看| 亚洲中字无码AV电影在线观看| 一级片一区| 2024av在线无码中文最新| 亚洲人成网站观看在线观看| 欧美性爱精品一区二区三区| 一区二区三区国产| 国产人免费人成免费视频| 亚洲高清中文字幕在线看不卡| 亚洲视频四区| 国产精品自在线拍国产电影| 日韩成人在线一区二区| 国产精品视频999| 久久国产精品国产自线拍| a毛片基地免费大全| 国产无码性爱一区二区三区| 欧美在线精品怡红院| 久久免费精品琪琪| 日韩高清一区 | 九九久久精品国产av片囯产区| 22sihu国产精品视频影视资讯| 亚洲大尺度在线| 女人18毛片一级毛片在线| 欧美视频在线播放观看免费福利资源 | 毛片久久久| 99精品福利视频| 亚洲成网777777国产精品| 日韩精品成人在线| 亚洲国产午夜精华无码福利| 91成人在线观看| 中文成人在线视频| 91视频精品| 国产网站免费看| 99这里只有精品在线| 青草视频久久| 先锋资源久久| 国产精品女熟高潮视频| 亚洲三级a| 影音先锋亚洲无码| 久热精品免费| 91久久偷偷做嫩草影院免费看| 波多野结衣一级毛片| 99在线视频精品|