亚洲综合在线一区二区三区-日韩超碰人人爽人人做人人添-麻豆国产精品久久人妻-无码人妻丰满熟妇啪啪-天堂精品一区二区三区-99久久综合狠狠综合久久aⅴ

×
新網 > 云服務器 > 正文

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

  • 作者:新網
  • 來源:新網
  • 瀏覽:100
  • 2018-05-08 11:19:18

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

 HTTP服務器,就是一個運行在主機上的程序。程序啟動了之后,會一直在等待其他所有客戶端的請求,接收到請求之后,處理請求,然后發送響應給客戶端??蛻舳撕头掌髦g使用HTTP協議進行通信,所有遵循HTTP協議的程序都可以作為客戶端。

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

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

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 国产精品aⅴ免费视频| 亚洲日本va一区二区三区| 精品无码av一区二区三区不卡| 国产精品综合一区二区三区| 国产午夜成人无码免费看| 欧美gv在线观看| 国产精品宾馆在线精品酒店| 伊人久久丁香色婷婷啪啪| 国产ww久久久久久久久久| 国产免费看插插插视频| 一二三四免费观看在线视频中文版| 制服丝袜av无码专区完整版| 亚洲乱码日产精品bd在线下载| 三上悠亚福利一区二区| 久久精品国产再热青青青| 国产成人综合久久精品推最新| 无码人妻丰满熟妇片毛片| 国产福利无码一区在线| 色猫咪av在线网址| 欧美成人在线视频| 99re久久精品国产| 亚洲成a人片在线观看天堂 | 亚洲精品亚洲人成在线观看麻豆| 日韩欧美精品一区二区三区视频| 久久精品视频在线看99| 成人无码一区二区三区网站| 亚洲色无码国产精品网站可下载 | 精品国产一区二区三区麻豆免费观看完整版 | 欧美性猛交xxxx富婆| 国产精品视频一区二区噜噜| 亚洲熟妇无码乱子av电影| 色五月丁香五月综合五月| 国产精品免费精品自在线观看| 亚洲av中文无码乱人伦在线播放| 最近中文字幕mv在线视频看 | 久久久无码精品亚洲日韩蜜桃| 久久成人国产精品| 亚洲一区二区三区免费的视频| 人妻综合一区二区| 国产精品高清一区二区| 久久精品国产99国产精品|