青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

doing5552

記錄每日點(diǎn)滴,不枉人生一世

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  73 Posts :: 0 Stories :: 94 Comments :: 0 Trackbacks

公告

常用鏈接

留言簿(24)

我參與的團(tuán)隊(duì)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 456264
  • 排名 - 49

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

    大二的時(shí)候就開(kāi)始接觸CGI了,那時(shí)候用perl、php都寫(xiě)過(guò)CGI程序,對(duì)CGI的了解

也浮于表面上,最近由于工作需要,需要用C來(lái)寫(xiě)CGI程序,是時(shí)候弄清楚CGI內(nèi)部的工

作機(jī)制了。

1. CGI是什么?

  相信很多人和我之前一樣,說(shuō)到CGI,會(huì)熟練的蹦出一句“Common Gateway

Interface ”,沒(méi)錯(cuò),這確實(shí)是CGI的全稱(chēng),可以翻譯為“通用網(wǎng)關(guān)接口”,可一說(shuō)到它的

用處,有多少人能夠講清楚? 沒(méi)關(guān)系,現(xiàn)在我就幫大家來(lái)解決這個(gè)困惑。按照CGI 1.1

里面的說(shuō)法“The Common Gateway Interface (CGI) is a simple interface for

running external programs, software or gateways under an information server in

a platform–idependent manner. Currently, the supported information servers

are HTTP servers.”,和我們熟悉的一樣,CGI現(xiàn)在都用在http服務(wù)器上,那么CGI能夠

提供怎樣的便利呢?答案如下:“A plain HTML document that the Web daemon

retrieves is static, which means it exists in a constant state: a text file

that doesn’t change. A CGI program, on the other hand, is executed in

real-time, so that it can output dynamic information.”

2. CGI接口定義

    目前關(guān)于CGI接口最新的版本是1.1, 既然CGI程序充當(dāng)?shù)慕巧且粋€(gè)Gateway,那么

這個(gè)Gateway的兩端是什么?沒(méi)錯(cuò),是Http Server(Web Server)的輸入和輸出,換句話(huà)說(shuō)

,CGI程序從Web Server那里獲得瀏覽器發(fā)過(guò)來(lái)的數(shù)據(jù),進(jìn)行相應(yīng)處理后,輸出瀏覽器識(shí)別

的html文本給Web Server。為了便于理解, 還是用流程圖示意一下。

 client                   Web Server             CGI程序    
    
       http協(xié)議                         CGI接口
發(fā)送請(qǐng)求---->接受請(qǐng)求并將數(shù)據(jù)處理發(fā)送給CGI程序--->獲得處理過(guò)的數(shù)據(jù)并解析
                                               
接受數(shù)據(jù)<----獲得CGI返回的數(shù)據(jù)并發(fā)送給客戶(hù)端<---處理數(shù)據(jù)并返回html數(shù)據(jù)

            圖 1

本文討論的重點(diǎn)就是這個(gè)CGI接口, CGI程序通過(guò)環(huán)境變量和標(biāo)準(zhǔn)輸入獲得數(shù)據(jù),通過(guò)標(biāo)

準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出發(fā)送數(shù)據(jù),那么這個(gè)到底是怎么實(shí)現(xiàn)的呢?

3. CGI接口實(shí)現(xiàn)

其實(shí)Web Server和CGI程序就是兩個(gè)進(jìn)程,要實(shí)現(xiàn)CGI接口就是如何實(shí)現(xiàn)這兩個(gè)進(jìn)程的通信

,Web Server獲得瀏覽器發(fā)送過(guò)來(lái)的請(qǐng)求后,將數(shù)據(jù)做相應(yīng)處理,然后fork一個(gè)子進(jìn)程處

理客戶(hù)請(qǐng)求,子進(jìn)程組織相應(yīng)的環(huán)境變量和參數(shù)準(zhǔn)備傳遞給CGI程序,然后調(diào)用execvp執(zhí)

行CGI程序。CGI程序有自己的環(huán)境變量,就是如上實(shí)現(xiàn)的,第二節(jié)說(shuō)過(guò),CGI程序除了通

過(guò)環(huán)境變量獲得數(shù)據(jù)外(其實(shí)這是get方法獲取數(shù)據(jù)的手段),還通過(guò)標(biāo)準(zhǔn)輸入獲得數(shù)據(jù)(pos

t方法獲取數(shù)據(jù)的方法),并且返回的數(shù)據(jù)是發(fā)送到標(biāo)準(zhǔn)輸出。相信你和我之前有一樣的疑

問(wèn),為什么CGI程序能夠從標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出讀寫(xiě)數(shù)據(jù)?其實(shí)這是通過(guò)管道和dup2系統(tǒng)

調(diào)用實(shí)現(xiàn)的,見(jiàn)下面的示意圖:

                               _____________________
                          dup2|                     |
(CGI program)read<-stdin<--|p[0]--管道1--p[1]|<-write (http server)
                              |_____________________|

                            圖2: CGI讀的實(shí)現(xiàn)
                                 _____________________
                            dup2|                     |
(CGI program)write->stdout-->|p[1]--管道2--p[0]|->read (http server)
                                |_____________________|

                            圖3: CGI寫(xiě)的實(shí)現(xiàn)

4. 如何寫(xiě)CGI程序

    有了上述的講述后,應(yīng)該算基本熟悉CGI的內(nèi)幕了,這樣寫(xiě)起CGI程序也會(huì)得心應(yīng)手,

首先獲得相應(yīng)的環(huán)境變量并保存,然后就是數(shù)據(jù)處理,根據(jù)REQUEST_METHOD環(huán)境變量判斷

表單提交的方法是GET還是METHOD,如何是GET,則從QUERY_STRING里面獲取數(shù)據(jù),如果是

POST, 那么從stdin讀取長(zhǎng)度CONTENT_LENGTH的數(shù)據(jù)。下面就是數(shù)據(jù)處理,組織html的輸

出頁(yè)面,并用printf輸出。

5. 小結(jié)

    上面講的其實(shí)只是一個(gè)概況,關(guān)于CGI的接口有興趣的可以去看看這兩個(gè)網(wǎng)頁(yè):

http://cgi-spec.golux.com/draft-coar-cgi-v11-03-clean.html 
http://hoohoo.ncsa.uiuc.edu/cgi/intro.html
    我敘述的可能有些地方也有問(wèn)題,歡迎提出! 另外關(guān)于CGI實(shí)現(xiàn)的代碼可以看看

開(kāi)源軟件"thttpd",這是一個(gè)輕量級(jí)的http server,實(shí)現(xiàn)的很講究,主頁(yè)在

    http://www.acme.com/software/thttpd/

  完畢!

posted on 2010-07-13 13:41 doing5552 閱讀(1071) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜精品久久久久99热蜜桃导演| 亚洲精品资源| 国产精品久久久久久久久久免费| 午夜精品三级视频福利| 久久精品国产一区二区三区免费看| 亚洲一级高清| 久久精品国产欧美激情| 欧美精品一区二区精品网| 久久精品女人天堂| 伊人婷婷欧美激情| 99精品视频免费观看视频| 久久国产成人| 亚洲欧洲精品一区| 亚洲电影欧美电影有声小说| 亚洲作爱视频| 免费成人你懂的| 一本色道久久88综合日韩精品| 亚洲在线观看视频网站| 欧美大胆a视频| 国产精品一区二区久久精品 | 麻豆成人在线播放| 亚洲精品中文字幕在线| 欧美一区二区三区在线播放| 欧美日韩国产另类不卡| 在线播放精品| 亚洲美女诱惑| 欧美韩日一区| 亚洲电影免费观看高清完整版在线| 欧美电影打屁股sp| 亚洲直播在线一区| 欧美性色综合| 在线一区二区视频| 亚洲人永久免费| 欧美成人免费小视频| 亚洲免费网址| 99这里只有精品| 欧美国产视频一区二区| 欧美一区二区三区四区在线| 亚洲婷婷国产精品电影人久久| 国产一区二区三区四区在线观看| 亚洲自啪免费| 日韩网站在线看片你懂的| 国产日韩欧美自拍| 久久久久国内| 欧美一区1区三区3区公司| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美成人中文| 国产亚洲一区在线| 一本色道婷婷久久欧美| 亚洲国产精品久久久久| 欧美国产另类| 久久久久久久91| 亚洲电影免费观看高清完整版| 亚洲视频在线观看三级| 日韩亚洲精品电影| 美女诱惑一区| 亚洲精品视频一区二区三区| 性亚洲最疯狂xxxx高清| 亚洲欧美日韩一区在线观看| 欧美精品日日鲁夜夜添| 欧美成人激情在线| 欧美人成免费网站| 欧美激情第8页| 在线视频国内自拍亚洲视频| 欧美在线视频二区| 最新日韩中文字幕| 一区二区三区不卡视频在线观看 | 欧美日韩国产精品专区| 欧美岛国激情| 亚洲黄色在线看| 亚洲天堂男人| 午夜激情一区| 欧美v日韩v国产v| 亚洲在线中文字幕| 欧美手机在线| 欧美不卡一区| 亚洲黑丝在线| 欧美寡妇偷汉性猛交| 亚洲日本欧美| 一区二区三区蜜桃网| 欧美日韩在线综合| 亚洲午夜三级在线| 欧美伊久线香蕉线新在线| 国产亚洲欧美激情| 久久婷婷国产麻豆91天堂| 亚洲一级特黄| 老色鬼久久亚洲一区二区| 午夜亚洲性色福利视频| 毛片精品免费在线观看| 亚洲电影在线观看| 国产精品午夜在线观看| 亚洲精品乱码视频| 亚洲在线观看免费视频| 国产精品一区二区在线观看网站 | 夜夜嗨av色综合久久久综合网| 在线一区二区日韩| 国产精品自拍三区| 久久天天躁狠狠躁夜夜av| 亚洲精品免费观看| 欧美一区二区三区四区视频| 亚洲国产欧美不卡在线观看| 欧美激情按摩在线| 亚洲在线免费视频| 欧美成人中文| 亚洲影视在线播放| 在线日韩欧美| 欧美日韩亚洲一区二区三区在线观看| 欧美jizz19性欧美| 亚洲一区亚洲| 永久久久久久| 国产精品久久久久一区二区三区共| 欧美一乱一性一交一视频| 亚洲破处大片| 久久综合伊人77777麻豆| 在线视频精品一| 国产专区一区| 久久精品亚洲国产奇米99| 亚洲国产高清aⅴ视频| 欧美中文字幕视频| 99这里有精品| 在线免费观看日韩欧美| 国产精品久久久久免费a∨| 麻豆精品精华液| 午夜精品国产更新| 99热在这里有精品免费| 欧美a级片网| 久久精品免费看| 韩日成人在线| 欧美xxx成人| 欧美中文在线观看国产| 夜夜狂射影院欧美极品| 亚洲国产精品美女| 一区二区三区欧美成人| 亚洲第一黄色网| 国产在线观看精品一区二区三区| 欧美午夜不卡视频| 欧美黄色免费网站| 欧美成人dvd在线视频| 久久伊伊香蕉| 久久九九精品99国产精品| 午夜视频一区二区| 亚洲一区视频在线观看视频| 99re这里只有精品6| 亚洲精品在线电影| 亚洲国产精品久久久久婷婷老年| 欧美成人精品激情在线观看| 久久一区中文字幕| 一区二区三区久久久| 99在线|亚洲一区二区| 亚洲乱码精品一二三四区日韩在线 | 欧美在线一二三四区| 亚洲欧美视频在线观看| 亚洲男女自偷自拍| 欧美在线免费看| 久久精品天堂| 免费在线观看成人av| 免费久久99精品国产| 欧美成人精品高清在线播放| 欧美日本一区| 国产精品va在线| 国产精品永久在线| 国产亚洲福利社区一区| 一区二区三区中文在线观看| 欧美日韩伦理在线免费| 国产精品久久国产精品99gif| 欧美三级欧美一级| 国产区日韩欧美| 欧美日韩性视频在线| 国产精品国产三级国产普通话99 | 久久精品国产91精品亚洲| 久久久久国内| 欧美精品久久99久久在免费线| 欧美久久电影| 国产精品综合色区在线观看| 在线观看亚洲精品视频| 一本久久综合亚洲鲁鲁| 久久精品国产一区二区三| 欧美大片在线观看一区| 99国产一区二区三精品乱码| 香蕉久久国产| 免费成人美女女| 国产精品久久久爽爽爽麻豆色哟哟 | 国产精品99久久99久久久二8| 亚洲国产综合在线看不卡| 亚洲深夜影院| 久久亚洲精品伦理| 国产精品爱久久久久久久| 国产原创一区二区| 亚洲色无码播放| 99精品久久| 久久久99久久精品女同性| 亚洲国产岛国毛片在线| 午夜久久久久久久久久一区二区| 久久夜色精品亚洲噜噜国产mv| 欧美午夜激情在线| 日韩亚洲精品电影| 蜜臀av国产精品久久久久| 夜夜爽av福利精品导航| 久久这里有精品15一区二区三区| 久久综合伊人77777蜜臀|