loi*_*iao 5 sockets tcp http go
在 GO net/http Response Body 注释中说:
调用者有责任关闭 Body。默认 HTTP 客户端的 Transport 不会尝试重用 HTTP/1.0 或 HTTP/1.1 TCP 连接(“保持活动”),除非 Body 被读取完成并关闭。
这意味着:如果我使用 http.Get 并且不调用 resp.Body.Close() 那么它不会恢复 HTTP/1.0 或 HTTP/1.1 TCP 连接(“保持活动”)是吗?
所以我写了一些代码:
包主我只看到在wireshark 中建立了一个tcp 连接,为什么?我不关闭进口 ( “时间” “FMMT” “io/ioutil” “网络/http” )
函数主() { resp, err := http.Get(" http://127.0.0.1:8588 ")
Run Code Online (Sandbox Code Playgroud)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 连接。
您已阅读到第一次出现以下行的结尾:
_, err = ioutil.ReadAll(resp.Body)
Run Code Online (Sandbox Code Playgroud)
因此连接已准备好重新使用。尽量不要再次读取和运行。
| 归档时间: |
|
| 查看次数: |
3991 次 |
| 最近记录: |