golang http 連接超時(shí)和傳輸超時(shí)的例子
golang 測(cè)試代碼
package main
import (
"net/http"
"net/url"
"fmt"
"io/ioutil"
"time"
"net"
"crypto/tls"
)
func TimeoutDialer(cTimeout time.Duration, rwTimeout time.Duration) func(net, addr string) (c net.Conn, err error) {
return func(netw, addr string) (net.Conn, error) {
conn, err := net.DialTimeout(netw, addr, cTimeout)
if err != nil {
return nil, err
}
conn.SetDeadline(time.Now().Add(rwTimeout))
return conn, nil
}
}
func main() {
connectTimeout := 5 * time.Second
readWriteTimeout := 100 * time.Millisecond
c := http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
Dial: TimeoutDialer(connectTimeout, readWriteTimeout),
},
}
uri := "https://www.youtobe.com"
req, err := http.NewRequest(http.MethodPost, uri, nil)
if err != nil {
fmt.Println("req error:" + err.Error())
return
}
req.Header = http.Header{}
req.Header["Connection"] = []string{"Close"}
req.Header["User-Agent"] = []string{"wpt-http-client/1.1"}
data := make(url.Values)
data["name"] = []string{"baixs"}
data["hobby"] = []string{"runing"}
resp, err := c.Do(req)
if err != nil {
fmt.Println("do error,err:" + err.Error())
return
}
respBody, err := ioutil.ReadAll(resp.Body)
fmt.Println(string(respBody))
}
測(cè)試結(jié)果
連接超時(shí)(包括握手)

傳輸超時(shí)(也就是讀寫,從accept開始計(jì)算 )

以上這篇golang http 連接超時(shí)和傳輸超時(shí)的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Go如何優(yōu)雅的關(guān)閉goroutine協(xié)程
本文將介紹首先為什么需要主動(dòng)關(guān)閉goroutine,并介紹如何在Go語(yǔ)言中關(guān)閉goroutine的常見套路,包括傳遞終止信號(hào)和協(xié)程內(nèi)部捕捉終止信號(hào),之后,文章列舉了需要主動(dòng)關(guān)閉協(xié)程運(yùn)行的常見場(chǎng)景,希望通過本文的介紹,讀者能夠掌握如何在適當(dāng)?shù)臅r(shí)候關(guān)閉goroutine2023-05-05
Go處理JSON數(shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了Go處理JSON數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
淺析Go中函數(shù)的健壯性,panic異常處理和defer機(jī)制
這篇文章主要為大家詳細(xì)介紹了Go中函數(shù)的健壯性,panic異常處理和defer機(jī)制的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-10-10
golang中http請(qǐng)求的context傳遞到異步任務(wù)的坑及解決
這篇文章主要介紹了golang中http請(qǐng)求的context傳遞到異步任務(wù)的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Go語(yǔ)言實(shí)現(xiàn)登錄驗(yàn)證代碼案例
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)登錄驗(yàn)證代碼案例,代碼和圖文講解的很清晰,有感興趣的可以學(xué)習(xí)下2021-03-03
Go語(yǔ)言設(shè)計(jì)模式之結(jié)構(gòu)型模式
本文主要聚焦在結(jié)構(gòu)型模式(Structural Pattern)上,其主要思想是將多個(gè)對(duì)象組裝成較大的結(jié)構(gòu),并同時(shí)保持結(jié)構(gòu)的靈活和高效,從程序的結(jié)構(gòu)上解決模塊之間的耦合問題2021-06-06
golang?pprof?監(jiān)控goroutine?thread統(tǒng)計(jì)原理詳解
這篇文章主要為大家介紹了golang?pprof?監(jiān)控goroutine?thread統(tǒng)計(jì)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04

