亚洲综合极品香蕉久久网,久久夜精品综合缴情五月 ,亚洲动漫成人一区二区,国产在线不卡视频,国产丝袜精品不卡,亚洲乱码日产精品bd,久久久久久国产精品免费网站,亚洲综合av一区二区三区
×

HTTP 服務(wù)器程序編寫過程總結(jié)(一)

  • 作者:新網(wǎng)
  • 來源:新網(wǎng)
  • 瀏覽:100
  • 2018-05-08 11:19:18

HTTP服務(wù)器,就是一個(gè)運(yùn)行在主機(jī)上的程序。程序啟動(dòng)了之后,會(huì)一直在等待其他所有客戶端的請求,接收到請求之后,處理請求,然后發(fā)送響應(yīng)給客戶端。客戶端和服務(wù)器之間使用HTTP協(xié)議進(jìn)行通信,所有遵循HTTP協(xié)議的程序都可以作為客戶端。 先直接上代碼,然后再詳細(xì)說明實(shí)現(xiàn)細(xì)節(jié)。

 HTTP服務(wù)器,就是一個(gè)運(yùn)行在主機(jī)上的程序。程序啟動(dòng)了之后,會(huì)一直在等待其他所有客戶端的請求,接收到請求之后,處理請求,然后發(fā)送響應(yīng)給客戶端。客戶端和服務(wù)器之間使用HTTP協(xié)議進(jìn)行通信,所有遵循HTTP協(xié)議的程序都可以作為客戶端。

<div
5895d477-f76e-4df0-9ab4-6cfe1bce80ce.jpg
先直接上代碼,然后再詳細(xì)說明實(shí)現(xiàn)細(xì)節(jié)。
 
測試運(yùn)行
 
代碼寫好之后,運(yùn)行測試一下,將上面代碼保存到server.c,然后編譯程序:
 
./server運(yùn)行
 
服務(wù)器運(yùn)行,監(jiān)聽9001端口。再用netstat命令查看:
 
server程序在監(jiān)聽9001端口,運(yùn)行正確。接著用瀏覽器訪問,成功輸出了Hello World,再嘗試用telnet去模擬HTTP請求:
 
1、成功連接
 
2、發(fā)送HTTP請求
 
3、HTTP響應(yīng)結(jié)果
 
上面是一個(gè)最簡單的server程序,代碼比較簡單,省去一些細(xì)節(jié),下面通過代碼來學(xué)習(xí)一下socket的編程細(xì)節(jié)。
 
啟動(dòng)server的流程
 
socket 函數(shù)
 
創(chuàng)建一個(gè)套接字,通過各參數(shù)指定套接字的類型。
 
套接字地址結(jié)構(gòu)
 
在socket編程中,大部分函數(shù)都用到一個(gè)指向套接字地址結(jié)構(gòu)的指針作為參數(shù)。針對不同的協(xié)議類型,會(huì)有不同的結(jié)構(gòu)體定義格式,對于ipv4,結(jié)構(gòu)如下所示:
 
注:sockaddr_in是**Internet socket address structure**的縮寫。
 
ip地址結(jié)構(gòu)
 
套接字地址結(jié)構(gòu)的作用是為了將ip地址和端口號傳遞到socket函數(shù),寫成結(jié)構(gòu)體的方式是為了抽象。當(dāng)作為一個(gè)參數(shù)傳遞進(jìn)任何套接字函數(shù)時(shí),套接字地址結(jié)構(gòu)總是以引用方式傳遞。然而,協(xié)議族有很多,因此以這樣的指針作為參數(shù)之一的任何套接字函數(shù)必須處理來自所有支持的任何協(xié)議族的套接字地址結(jié)構(gòu)。使用void *作為通用的指針類型,因此,套接字函數(shù)被定義為以指向某個(gè)通用套接字結(jié)構(gòu)的一個(gè)指針作為其參數(shù)之一,正如下面的bind函數(shù)原型一樣。
 
這就要求,對這些函數(shù)的任何調(diào)用都必須要將指向特定于協(xié)議的套接字地址結(jié)構(gòu)的指針進(jìn)行強(qiáng)制類型轉(zhuǎn)換,變成某個(gè)通用套接字地址結(jié)構(gòu)的指針。例如:
 
對于所有socket函數(shù)而言,sockaddr的唯一用途就是對指向特定協(xié)議的套接字地址結(jié)構(gòu)的指針執(zhí)行強(qiáng)制類型轉(zhuǎn)換,指向要綁定給sockfd的協(xié)議地址。
 
bind函數(shù)
 
將套接字地址結(jié)構(gòu)綁定到套接字
 
地址的長度
 
綁定了socket之后,就可以使用該socket開始監(jiān)聽請求了。
 
listen函數(shù)
 
將sockfd從未連接的套接字轉(zhuǎn)換成一個(gè)被動(dòng)套接字,指示內(nèi)核應(yīng)接受指向該套接字的連接請求。
 
listen函數(shù)會(huì)將套接字從CLOSED狀態(tài)轉(zhuǎn)換到LISTEN狀態(tài),第二個(gè)參數(shù)規(guī)定內(nèi)核應(yīng)該為相應(yīng)套接字排隊(duì)的最大連接個(gè)數(shù)。
 
關(guān)于backlog參數(shù),內(nèi)核為任何一個(gè)給定的監(jiān)聽套接字維護(hù)兩個(gè)隊(duì)列:
 
1、未完成連接隊(duì)列,在隊(duì)列里面的套接字處于SYN_RCVD狀態(tài)
 
2、已完成隊(duì)列,處于ESTABLISHED狀態(tài)
 
兩個(gè)隊(duì)列之和不超過backlog的大小。
 
listen完成之后,socket就處于LISTEN狀態(tài),此時(shí)的socket調(diào)用accept函數(shù)就可以接受客戶端發(fā)來的請求了。
 

免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費(fèi)咨詢獲取折扣

Loading
主站蜘蛛池模板: 中文字幕在线亚洲精品| 伊人精品成人久久综合97 | 97超碰人人爱香蕉精品| 秋霞久久久久久一区二区| 97精品伊人久久久大香线蕉| 国色精品无码专区在线不卡| 日本50岁丰满熟妇xxxx| 国产精品麻豆成人av网| 国产极品美女到高潮| 国产成人无码精品xxxx| 亚洲偷偷自拍高清| 亚洲欧洲日产国码二区| 激情欧美成人小说在线视频 | 蜜桃无码av一区二区| 国产精品白丝av嫩草影院| 久久国产精品99精品国产987| 亚洲在战av极品无码| 亚洲h精品动漫在线观看| 少妇人妻综合久久中文| 国产伦人人人人人人性| 精品亚洲国产成人a片app| 亚洲精品久久av无码麻| 国产人成无码视频在线1000| 亚洲一久久久久久久久| 亚洲这里只有久热精品伊人 | 亚洲色大成网站在线| 国产高清-国产av| 亚洲一区天堂九一| 久久精品一区二区三区av| 国产精品久aaaaa片| 精品亚洲国产成人蜜臀av| 亚洲人成网站观看在线播放| 亚洲日韩欧美在线无卡| 玖玖资源站亚洲最大的网站| 丰满多毛少妇做爰视频| 亚洲性色成人av天堂| 97超碰人人爱香蕉精品| 亚洲欧美日韩精品专区| 久久青草成人综合网站| 国产99视频精品免费视看6| 国产亚洲欧洲日韩在线...|