91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tcp協議怎么實現HTTP服務器

發布時間:2021-08-07 16:04:57 來源:億速云 閱讀:702 作者:chen 欄目:服務器

這篇文章主要講解了“Tcp協議怎么實現HTTP服務器”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Tcp協議怎么實現HTTP服務器”吧!

本篇文章主要介紹go語言基于tcp協議實現簡單的http服務器,大家可以學習到:

1.怎樣實現一個簡單的http服務器

2.通過錯誤的http協議格式加深對http協議的理解

平時我們使用的http服務器,如:apache、nginx都是一個完整而且功能強大的服務器,如果我們不去看源碼無法很好地理解http服務器的內部實現。如果我們不去自己實現一個簡單的http服務器,可能就無法很好地理解http協議,我們學習應該不僅要知其然還要知其所以然。

本篇文章從tcp協議開始介紹,之后使用tcp  socket按照http協議格式發送數據到客戶端,這里的客戶端指的就是瀏覽器。

傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。

tcp協議屬于傳輸層協議,http協議屬于應用層協議,http協議位于tcp協議之上,也是http協議是基于tcp協議實現的。很多應用層協議都是基于tcp協議實現的,如:文件傳輸協議ftp、ssh協議、telenet協議等。

下面開始我們的編程之旅!

首先監聽本地tcp 8888端口

listen, err := net.Listen("tcp", "127.0.0.1:8888")

之后打印監聽信息

fmt.Println("server start listening on port 8888")

接著延時關閉tcp流

defer listen.Close()

之后for循環進入監聽,如果有連接進來啟動goroutine進行處理

Tcp協議怎么實現HTTP服務器

go

接著我們來看下handleClient函數的實現

Tcp協議怎么實現HTTP服務器

go

handleClient函數里面首先定義了響應體,打印響應體的長度。之后定義響應頭,響應頭以“HTTP/1.1 200  OK\n”開始,這是http協議的標準響應頭,之后定義響應類型和響應體的長度。響應頭和響應體之間以“\n\r\n”分割。

最后以字節格式發送給瀏覽器。

下面我們來看下執行效果吧!在瀏覽器中輸入

http://127.0.0.1:8888/
Tcp協議怎么實現HTTP服務器

瀏覽器

可以看到瀏覽器中顯示出我們啟動的服務器返回的數據。Response Headers中的響應頭正是我們設置的。

恭喜你,完成了自己的http服務器!

但是凡事我們要舉一反三,我們再來試一下如果http狀態是500時,返回的結果是什么?

Tcp協議怎么實現HTTP服務器

http

Tcp協議怎么實現HTTP服務器

瀏覽器

這個http 500就是我們在開發中經常遇到的,現在我們自己模擬實現了。

我們可以嘗試去掉響應頭和響應體之間的分隔符

Tcp協議怎么實現HTTP服務器

http

我們看下結果

Tcp協議怎么實現HTTP服務器

瀏覽器

結果是瀏覽器無法識別,這就是為什么會有http協議,先規定協議各家瀏覽器按照協議實現,這樣就不會出現問題。

感謝各位的閱讀,以上就是“Tcp協議怎么實現HTTP服務器”的內容了,經過本文的學習后,相信大家對Tcp協議怎么實現HTTP服務器這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節
推薦閱讀:
  1. HTTP協議
  2. TCP/IP協議

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

保山市| 兴业县| 洞头县| 铜川市| 兴城市| 松原市| 新晃| 昭觉县| 延津县| 延寿县| 华阴市| 茶陵县| 英吉沙县| 桑植县| 尼木县| 灯塔市| 西充县| 靖江市| 清丰县| 忻城县| 南木林县| 托克托县| 舒城县| 绍兴县| 枣阳市| 黎川县| 资溪县| 汉寿县| 连江县| 成安县| 体育| 黄龙县| 凭祥市| 安徽省| 和龙市| 桃园县| 新蔡县| 汤原县| 雷山县| 黎城县| 天全县|