Golang http短连接

本文详细介绍了如何在Golang中管理HTTP连接,包括客户端和服务器端的连接关闭策略,如设置短连接、禁用持久连接及使用Transport取消HTTP复用连接。适合Golang开发者学习和参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端关闭Http连接

在客户端关闭 http 连接

  1. 直接在请求后关闭连接
func main() {
    req, err := http.NewRequest("GET", "http://localhost",nil )
    if err != nil {
        log.Errorf("")
    }
    req.Close = true
    resp, err := http.Client.Do(req)
    ...
}
  1. 在头部设置连接状态为关闭
func main() {
    req, err := http.NewRequest("GET", "http://localhost",nil )
    if err != nil {
        log.Errorf("")
    }
    req.Header.Add("Connection", "close")
    resp, err := http.Client.Do(req)
    ...
}
  1. 使用 Transport 取消 HTTP利用连接
func main() {
    tr := http.Transport{DisableKeepAlives: true}
    client := http.Client{Transport: &tr}

    resp, err := client.Get("https://golang.google.cn/")
    if resp != nil {
        defer resp.Body.Close()
    }
    checkError(err)

    fmt.Println(resp.StatusCode)    // 200

    body, err := ioutil.ReadAll(resp.Body)
    checkError(err)

    fmt.Println(len(string(body)))
}

服务器端设置短连接

func main(){
    server := &http.Server{
		Handler:handle,
		ReadTimeout:  20 * time.Second,
		WriteTimeout: 20 * time.Second,
	}
	listen, err := net.Listen("tcp4",s.addr)
	if err != nil  {
		logger.Errorf("Failed to listen,err:%s",err.Error())
		panic(err)
	}
	server.SetKeepAlivesEnabled(false)
	err = server.Serve(listen)
}

参考:

[1]: Golang 新手可能会踩的 50 个坑(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值