| 方法 | 用途 | 攜帶數據方式 |
| GET | 獲取資源 | URL 查詢字符串 |
| POST | 提交數據 | 請求體 |
| HEAD | 僅獲取頭部 | 無實體 |
關鍵響應頭
HTTP/1.0 200 OK:狀態行,版本+狀態碼+描述。
Content-Type: text/html:實體 MIME 類型,瀏覽器據此渲染。
Content-Length: 1234:實體字節長度,瀏覽器據此讀取完整內容。
Server: CustomServer:服務器標識。
響應報文結構示例
HTTP/1.0 200 OK
Server: CustomCSharpServer
Content-Type: text/html
Content-Length: 567
Hello World
頭部與體之間以 空行(CRLF CRLF) 分隔。
實現簡易服務器步驟
- 創建
TcpListener 監聽端口(如 8080)。
- 循環
AcceptSocket 獲取客戶端 Socket。
- 接收請求數據,解析方法與路徑。
- 若 GET,映射虛擬路徑至物理文件。
- 文件存在 → 讀取字節 → 發送 200 響應頭 + 文件內容。
不存在 → 發送 404 響應頭 + 錯誤頁面。
- 關閉 Socket,繼續下一個連接。
代碼架構預覽
class MyWebServer
{
TcpListener listener;
void Start() { listener.Start(); Thread t = new Thread(ListenLoop); t.Start(); }
void ListenLoop() { while(true) { Socket s = listener.AcceptSocket(); HandleRequest(s); } }
void HandleRequest(Socket s) { /* 接收、解析、響應 */ }
void SendHeader(Socket s, string httpVer, string mime, int length, string status) { /* 發送頭部 */ }
void SendBody(Socket s, byte[] data) { s.Send(data); }
}
下一篇預告
下一篇將給出生產級可運行的完整代碼,包含虛擬目錄配置、MIME 映射、異常處理、編譯測試步驟。
- 上一篇文章: C# 實現簡易 HTTP Web 服務器(二):完整代碼實現
- 下一篇文章: C# 統一獲取設置 UI 控件值(四):Controller 模式解耦邏輯與視圖
Copyright ©
程式碼之家 All Rights Reserved