• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2017-03-22 12:39:23周暢王賾
      軟件工程 2017年1期
      關(guān)鍵詞:萬維網(wǎng)

      周暢 王賾

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

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

      中圖分類號:TP393.0 文獻(xiàn)標(biāo)識碼: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的一組簡單的靜態(tài)超媒體文檔變成一個(gè)完整的新的交互式媒體。使在網(wǎng)絡(luò)服務(wù)器下運(yùn)行外部分應(yīng)用程序(或網(wǎng)關(guān))成為可能。CGI-BIN目錄是存放CGI腳本的地方。這些腳本使Web服務(wù)器和瀏覽器能運(yùn)行外部程序,而無需啟動另一個(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所對應(yīng)的分別是這個(gè)資源的查、改、增、刪四個(gè)操作,而這其中的POST一般適用于資源信息的更新,GET用于信息的獲取/查詢,因?yàn)樵缙诘南到y(tǒng)對于DELETE是不支持的,所以說PUT和DELETE用的比較少。

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

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

      POST:向指定的資源提交要被處理的數(shù)據(jù),采用這種方法,查詢查詢字符串(名稱/值對)是在POST請求的HTTP消息主體中發(fā)送的。

      GET:從指定的資源請求數(shù)據(jù),采用這種方法查詢字符串(名稱/值對)是在GET請求的URL中發(fā)送的[6,7]。

      除以上介紹的內(nèi)容之外,這兩種方法在安全性等方面也有一定的區(qū)別,表1列出了兩種方法在具體項(xiàng)目上的區(qū)別。

      3 具體實(shí)現(xiàn)(Implementation)

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

      3.1 代碼編寫

      程序的代碼編寫主要包括post、get方法實(shí)現(xiàn),以及服務(wù)器的建立,其中在代碼編寫的過程中,post和get的體系基本相同,所以這里只介紹get的方法,post就不再進(jìn)行贅述,其中g(shù)et的代碼思路主要是首先從cgi中將存儲的數(shù)據(jù)調(diào)到form中,接著取出字段名是name的字段,取出字段名是comment的字段,最后打印html,并且加入name comment。除了get、post的編寫之外還有服務(wù)器的建立,大體思路是重寫http server類,然后獲得cgi句柄,接著設(shè)置cgi腳本路徑,最后是監(jiān)聽端口的死循環(huán)。

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

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

      建立在理解以上概念的基礎(chǔ)之上,接下來對于此項(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)聽端口,接下來用戶會發(fā)送一個(gè)請求,在接收到用戶的請求之后,要對用戶的請求類型進(jìn)行判斷,因?yàn)樵贖TTP中定義了很多和服務(wù)器之間進(jìn)行交互的方法,如前面提到的GET、POST、PUT、DELETE,但是由于此次項(xiàng)目只是針對GET、POST方法的實(shí)現(xiàn)進(jìn)行設(shè)計(jì),所以說PUT、DELETE在這里不做考慮。

      判斷用戶的類型之后,要對用戶的要求進(jìn)行處理,例如,用戶的請求類型是POST,那么接下來要在CGI-BIN中找到相對應(yī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)了不管采用的是什么樣的方法,都是按照這樣的流程進(jìn)行,但是正如前面所說的那樣,這個(gè)程序在處理用戶請求的時(shí)候認(rèn)可的是POST和GET兩種方法,所以說當(dāng)用戶的請求是DELETE或者是PUT的時(shí)候,程序是不會進(jìn)行數(shù)據(jù)處理的,如圖4所示請求類型判斷時(shí)候的具體方法。

      4 結(jié)論(Conclusion)

      在這篇文章中,我們討論實(shí)現(xiàn)HTTP Server的一些方法,并分析了其優(yōu)缺點(diǎn)。經(jīng)過對比,我們針對GET和POST方法進(jìn)行了設(shè)計(jì)。并使用Python語言編寫腳本,對程序進(jìn)行測試,最終實(shí)現(xià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] 劉一峰,劉冰,郭良動.抓取HTTP協(xié)議POST文本數(shù)據(jù)方法設(shè)計(jì)[J].中國科技信息,2016(18):26-27.

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

      [7] 齊紅心.PHP開發(fā)過程中頁面參數(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.

      作者簡介:

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

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

      猜你喜歡
      萬維網(wǎng)
      基于萬維網(wǎng)大數(shù)據(jù)的農(nóng)藥場地土壤污染快速預(yù)測方法研究*
      “開放共享,合作共贏”是推動互聯(lián)網(wǎng)不斷發(fā)展的精神力量
      共享比獨(dú)占更重要
      基于測繪地理信息技術(shù)的山洪質(zhì)災(zāi)害信息動態(tài)提取方法研究
      西部資源(2020年6期)2020-03-01 00:56:17
      5 Fast Facts About the World Wide Web on Its 30th Birthday萬維網(wǎng)30年:小知識一覽
      英語世界(2019年7期)2019-09-10 07:22:44
      萬維網(wǎng)30歲,創(chuàng)始人發(fā)公開信表達(dá)“不滿意”
      WWW是什么意思
      萬維網(wǎng)的HTTP和FTP協(xié)議
      WWW:通往世界的窗口
      CHIP新電腦(2015年2期)2015-12-22 17:54:09
      淺議互聯(lián)網(wǎng)網(wǎng)格技術(shù)
      石泉县| 肇庆市| 东丽区| 曲靖市| 皮山县| 南华县| 永济市| 遂川县| 沙湾县| 通州市| 虞城县| 年辖:市辖区| 南安市| 襄樊市| 什邡市| 秭归县| 精河县| 乌审旗| 琼结县| 灵石县| 错那县| 永福县| 桦南县| 滦南县| 阿克陶县| 霸州市| 广丰县| 镇平县| 利川市| 灵宝市| 海安县| 韶山市| 顺昌县| 铁岭县| 凉城县| 浙江省| 西乌珠穆沁旗| 连平县| 苏州市| 通州区| 从江县|