成人精品综合免费视频,影音先锋无码aⅴ男人资源站,伊人伊成久久人综合网996,亚洲成a人片在线观看高清,亚洲性色ai无码,精品视频国产香蕉尹人视频,人人妻人人澡人人爽秒播,无码一区二区三区久久精品
×

HTTP 服務器程序編寫過程總結(一)

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

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

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

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

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

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 少妇人妻av毛片在线看| 亚洲理论在线中文字幕观看| 亚洲自偷精品视频自拍| av色综合网站| 日韩精品无码久久久久| 久久久中文字幕精品一区二区| 久久亚洲精彩无码天堂| 狠狠色综合7777久夜色撩人ⅰ| 久久精品国产72国产精| 亚洲精品国产精品无码国模| 精品三级网站| 久久精品国产av大片| 18禁黄网站男男禁片免费观看| 乱色熟女综合一区二区三区| 隔壁邻居是巨爆乳寡妇| 亚洲成年人网| 96精品免费视频大全| 日日噜噜夜夜狠狠视频| 欧美老妇与zozoz0交| 国内久久婷婷精品人双人| 中文字幕一区二区三区久久蜜桃| 亚洲色欲啪啪久久www综合网| 久99久无码精品视频免费播放| 亚洲精品综合五月久久小说| 女人毛片a级大学毛片免费| 亚洲熟女国产熟女二区三区| 免费观看又色又爽又黄的崩锅| 中文字幕日韩一区二区三区不卡| 97亚洲欧美国产网曝97| 久久www视频| 中文字幕一区二区网站| 亚洲精品无码久久久久牙蜜区| 少妇放荡的呻吟干柴烈火动漫| 国产精品久久久久…| 久久亚洲国产精品三级黄片免费| 影音先锋中文字幕人妻| 人妻无码中文字幕免费视频蜜桃| 日本真人添下面视频免费| 国产又粗又猛又爽| 免费无码一区二区三区蜜桃大| 99无码熟妇丰满人妻啪啪 |