说:
呼叫者有责任关闭Body。默认HTTP客户端的传输不会尝试重用HTTP / 1.0或HTTP / 1.1 TCP连接(“keep-alive”),除非正在读取Body以完成并且 闭合。
这是意思:如果我使用http.Get并且不调用resp.Body.Close()那么它将不会重新生成HTTP / 1.0或HTTP / 1.1 TCP连接(“keep-alive”)是吗?
所以我写了一些代码:
package main我只看到wireshark中的一个tcp连接,为什么? 我没有关闭import ( "time" "fmt" "io/ioutil" "net/http" )
func main() { resp, err := http.Get("http://127.0.0.1:8588")
if err != nil { panic(err) } _, err = ioutil.ReadAll(resp.Body) if err != nil { panic(err) } resp2, err := http.Get("http://127.0.0.1:8588") if err != nil { panic(err) } _, err = ioutil.ReadAll(resp2.Body) if err != nil { panic(err) } fmt.Println("before time sleep") time.Sleep(time.Second * 35)
}
res.Body
所以http
客户端不应该重用tcp连接。
答案 0 :(得分:1)
答案 1 :(得分:0)
你已经读过它直到第一次出现在行的结尾:
_, err = ioutil.ReadAll(resp.Body)
因此可以重新连接。尽量不要阅读并再次运行。