欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

關(guān)于go語言關(guān)閉http連接的信息

http.ServeMux

HTTP協(xié)議全稱超文本傳輸協(xié)議(HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,它詳細(xì)規(guī)定了瀏覽器和WWW服務(wù)器之間通信的規(guī)則,通過Internet傳送WWW文檔的數(shù)據(jù)傳送協(xié)議。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比碑林網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式碑林網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋碑林地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

Web服務(wù)是HTTP協(xié)議的一個服務(wù),HTTP協(xié)議承載在TCP協(xié)議之上。Web服務(wù)工作流程

基于HTTP構(gòu)建的服務(wù)標(biāo)準(zhǔn)模型包括客戶端和服務(wù)端,HTTP請求從客戶端發(fā)出,服務(wù)端接收到請求后進(jìn)行處理,然后將響應(yīng)返回給客戶端。

HTTP服務(wù)端核心工作是如何接收來自客戶端的請求,并向客戶端返回響應(yīng)。當(dāng)HTTP服務(wù)器接收到客戶端請求時,首先會進(jìn)入路由模塊,路由又稱為服務(wù)復(fù)用器(Multiplexer),路由的工作在于請求找到對應(yīng)的處理器(Handler),處理器對接收到的請求進(jìn)行對應(yīng)處理后,構(gòu)建響應(yīng)并返回給客戶端。

Go語言通過引入 net/http 包來實(shí)現(xiàn)HTTP網(wǎng)絡(luò)訪問,并提供HTTP客戶端和服務(wù)端的實(shí)現(xiàn)。

創(chuàng)建HTTP服務(wù)需經(jīng)過2個階段

例如:創(chuàng)建HTTP服務(wù)

理解HTTP服務(wù)關(guān)鍵點(diǎn)在于路由器和處理器

服務(wù)復(fù)用器

處理器

http.ServeMux 內(nèi)部使用一個 map 映射來保存所有處理器, http.muxEntry 是一個多路復(fù)用器入口實(shí)體。

可以發(fā)現(xiàn)在 http.muxEntry 字段中存在著 http.Handler 接口類型的 h

雖然 http.ServeMux 也實(shí)現(xiàn)了 http.ServerHTTP() 算得上是一個 http.Handler ,但 http.ServeMux 的 http.ServeHTTP() 并非用來處理請求和響應(yīng),而是用來查找注冊路由對應(yīng)的處理器。

當(dāng) http.ServeMux 路由器設(shè)置路由規(guī)則后,會通過它實(shí)現(xiàn)的 ServeHTTP() 完成請求的分發(fā)。當(dāng)路由器接收到請求后若請求的URI為 * 則會關(guān)閉連接,否則會調(diào)用自身的 Handler() 來獲取對應(yīng)路由的處理器,最終通過調(diào)用 h.ServeHTTP(w,r) 實(shí)現(xiàn)對應(yīng)路由的實(shí)現(xiàn)邏輯。

路由器會根據(jù)用戶請求的URL路徑去匹配自身存儲的在 map 中的 handler ,最終調(diào)用匹配到的 handler 的 ServeHTTP() 以實(shí)現(xiàn)執(zhí)行對應(yīng)路由的處理函數(shù)。

創(chuàng)建 http.ServeMux 實(shí)例的方式有兩種

http.DefaultServeMux 是默認(rèn)的 http.ServeMux ,會隨著 net/http 包初始化而被自動初始化。

當(dāng) http.ListenAndServe() 在沒有提供其他處理器的情況下,即它的入?yún)?handler 為 nil 時內(nèi)部會使用 http.DefaultServeMux 。

net/http 包提供了一組快捷的注冊路由的函數(shù) http.Handle() 、 http.HandleFunc() 來配置 http.DefaultServeMux ,快捷函數(shù)會將處理器注冊到 http.DefaultServeMux 。

二者之間的區(qū)別在于 handler 參數(shù)上

http.Handle() 的 handler 是一個 http.Handler 接口實(shí)例,也就是說傳入的 handler 必須要自己提前實(shí)現(xiàn) http.Handler 接口的 ServerHTTP(ResponseWriter, *Request) 方法。

例如:將處理器放入閉包中,將參數(shù)傳入處理器。

http.HandleFunc() 的 handler 直接是一個原型為 func(ResponseWriter, *Request) 的函數(shù),深入追蹤會 HandleFunc() 會發(fā)現(xiàn)一個自定義的函數(shù)類型。

因此任何具有 func(ResponseWriter, *Request) 簽名的函數(shù)都能轉(zhuǎn)換成為一個 http.HandlerFunc 類型的對象。同時自定義的函數(shù)類型中已經(jīng)實(shí)現(xiàn)了 ServeHTTP() 方法,因此它也是一個 http.Handler 。

例如:返回時使用一個到 http.HandlerFunc 類型的隱式轉(zhuǎn)換

net/http 包提供了 http.NewServeMux() 來創(chuàng)建一個自定義的 http.ServeMux 實(shí)例

例如:調(diào)用 http.NewServeMux() 會創(chuàng)建服務(wù)復(fù)用器

例如:創(chuàng)建靜態(tài)服務(wù)

Go中沒有繼承、多態(tài),可通過接口來實(shí)現(xiàn)。而接口則是定義聲明的函數(shù)簽名,任何結(jié)構(gòu)體只要實(shí)現(xiàn)與接口函數(shù)簽名相同的方法,即等同于實(shí)現(xiàn)了對應(yīng)的接口。

例如: http.HandleFunc() 處理函數(shù)實(shí)現(xiàn)實(shí)際上調(diào)用默認(rèn) http.DefaultServeMux 的 HandleFunc() 方法

例如:調(diào)用 http.Handle() 方法則第二個參數(shù) handle 必須實(shí)現(xiàn) http.Handler 接口的 ServeHTTP() 方法,也就是說只要具有 ServeHTTP() 簽名方法即可作為處理器。

例如:自定義處理器

http.HandlerFunc 自身已實(shí)現(xiàn) http.Handler 接口的 ServeHTTP() 方法,因此它也是一個處理器。

http.HandlerFunc 的作用是將自定義函數(shù)轉(zhuǎn)換為 http.Handler 處理器類型,當(dāng)調(diào)用 http.HandlerFunc(fn) 后會強(qiáng)制將 fn 函數(shù)類型轉(zhuǎn)換為 http.HandlerFunc 類型,這樣 fn 函數(shù)就具有了 ServeHTTP() 方法,同時也就轉(zhuǎn)換成為了一個 http.Handler 處理器。因此 http.HandlerFunc 又稱為適配器。

HTTP(超文本傳輸協(xié)議)關(guān)閉?

80端口是為HTTP(HyperText Transport Protocol,超文本傳輸協(xié)議)開放的,主要用于在WWW(World Wide Web,萬維網(wǎng))服務(wù)上傳輸信息的協(xié)議,用IE訪問一般的網(wǎng)站都是通過這個端口,所以如果要訪問網(wǎng)站,必須開啟這個端口!

如果想關(guān)閉,可以到本地連接-》“屬性”-》“TCP/IP協(xié)議“-》“屬性”-》“高級”-》“選項(xiàng)”-》“TCP/IP篩選”-》“屬性”-》把TCP端口中選擇為只允許一些端口,然后把常用的TCP端口填進(jìn)去,不填80端口就關(guān)閉了,常用端口請查相關(guān)資料!

建議用防火墻或殺毒軟件監(jiān)聽80端口,可以保護(hù)80端口安全!

HTTP 的連接和斷開

這樣就完成了http連接的3次握手操作。

我們可以通過wireShark抓包工具來獲取http三次握手的整個過程

首先打開WireShark,選擇 Loopback 過濾條件

我們看下http斷開時的四次揮手的整個過程

我們關(guān)閉其中一個終端即可斷開http連接,利用WireShark來抓取整個過程

個人理解,在進(jìn)行http連接時,客戶端首先向服務(wù)器端發(fā)送連接的通信,然后服務(wù)器立即同意了對方通信的要求,因?yàn)榇藭r還沒有連接,服務(wù)器端沒有未處理完的事務(wù),可以即刻向?qū)Ψ桨l(fā)出通信的請求,最后等待客戶端的同意。在http斷開時,客戶端向服務(wù)器端發(fā)出close請求,然后,服務(wù)器端同意客戶端發(fā)出的close請求,因?yàn)榉?wù)器端可能還沒處理完 移動端上次請求的事務(wù),不能立即發(fā)出close請求,需要等到處理完成后再向客戶端發(fā)出close請求。再服務(wù)器器處理完之后,向移動端發(fā)出close請求,最后移動端同意服務(wù)器端發(fā)出的close請求。

分享文章:關(guān)于go語言關(guān)閉http連接的信息
文章來源:http://www.chinadenli.net/article8/dddjsop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計電子商務(wù)定制網(wǎng)站虛擬主機(jī)建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)