當前位置:編程學習大全網 - 源碼下載 - 如何從零寫壹個http server

如何從零寫壹個http server

考慮到從0開始的0指代不明,我想還是跳過OS及網卡驅動之類的玩意,從socket這個1開始。

1.建立壹個TCP Socket服務器。

首先編寫壹個TCP Socket服務器,是因為HTTP通信是建立在TCP Socket基礎上的。所要做的工作就是監聽某個指定端口(默認HTTP服務在80),接收訪問請求並建立連接,接收發來的Datagram,並且提供回復Datagram的能力。這壹步可以簡單可以復雜,可以考慮並發、均衡、端口連接限制balabala,也可以二逼到啥都不管。總之我們需要監聽壹個端口就是了。

2.編寫壹個解析HTTP Request的解析器。

既然是HTTP服務,從之前監聽的端口收來的Datagram裏自然就是HTTP Request。Request分表頭和正文,包括訪問地址、UA、Cookie等各類參數以及提交的表單等內容。詳細格式看看HTTP協議文檔就好。

3.實現URL路由。

獲得了Request之後,我們知道用戶訪問了個什麽地址,就要指向相應的內容。根據地址來指定內容的工作就是路由,把不同的路徑交給不同的程序(函數、腳本…)處理。

4.產生Response。

HTTP Response其實與Request很類似,也是區分表頭和正文,多幾個關機字表示當前相應狀態、響應內容類型之類的東西。正文裏就是妳需要的回應,可能是個json,可能是個靜態文件,也可能是別的什麽東西。從路由處得到響應的內容,然後按照HTTP Response的要求包起來。最後經過之前的Socket服務返回給用戶。

基本上簡單的HTTP Server就這麽點東西,可以說並不復雜。但是考慮到各種額外功能,例如權限、ip過濾、並發/異步、request轉發、websocket、https…其實還是蠻麻煩的。

  • 上一篇:上海豫園門票需要預約嗎
  • 下一篇:誰給我摩爾莊園的攻略?急ing!!
  • copyright 2024編程學習大全網