`

golang的http关闭问题

    博客分类:
  • go
 
阅读更多

 测试版本go1.4.2

	resp, err := http.Get("http://example.com/")
	if resp != nil {
		defer resp.Body.Close()
	}

	if err != nil {
		fmt.Println("err: ", err)
		return
	}

	_, err = ioutil.ReadAll(resp.Body)  //去掉这句,则主动关闭连接 ???
这里看到的解释: The orignal implementation for resp.Body.Close() also reads and discards the remaining response body data. This ensured that the http connection could be reused for another request if the keepalive http connection behavior is enabled. The latest http client behavior is different. Now it's your responsibility to read and discard the remaining response data. If you don't do it the http connection might be closed instead of being reused. This little gotcha is supposed to be documented in Go 1.5.

 

 

分享到:
评论

相关推荐

    golang http连接复用方法

    在Golang中,HTTP连接复用是一种优化网络性能的技术,它允许HTTP客户端和服务器在完成一个请求后保持连接打开,以便后续的请求可以重用相同的连接,而不是每次都建立新的TCP连接。这大大减少了网络延迟,提高了应用...

    golang写的推技术聊天室

    若长时间未收到回应,则关闭该连接。 6. **安全性**:考虑使用HTTPS确保通信的安全,避免中间人攻击。此外,还需要对用户输入进行验证和清理,防止跨站脚本(XSS)和SQL注入等攻击。 7. **错误处理**:Golang的...

    golang使用http client发起get和post请求示例

    在Golang中,发起HTTP请求通常使用`net/http`包提供的功能。`http.Client`是Golang HTTP客户端的核心,它可以发起GET、POST等不同类型的HTTP请求。以下将详细讲解如何使用`http.Client`进行GET和POST请求。 1. **...

    深入理解Golang之http server的实现

    在Golang中,实现一个HTTP服务器非常直观且高效,这得益于其内置的`net/http`包。本文将深入探讨Golang `http` server的实现机制,帮助开发者更好地理解和利用这一特性。 HTTP服务器的核心职责是接收客户端发送的...

    server:围绕Golang nethttp的简单包装器以启动服务器

    围绕Golang net / http的简单包装器,以启动/关闭服务器 这是围绕net / http服务器的自定义包装程序,它处理服务请求并关闭所需的SYSCALL,而不必显式编写代码来处理中断以关闭服务器。 还实现了基本的SO_REUSEPORT...

    golang路由,集成mysql,redis。读取配置文件信息

    Golang的标准库`net/http`提供了一个强大的API来创建HTTP服务器和处理路由。你可以通过定义HTTP处理器函数并注册到路由器来设置不同的URL路由。例如,你可以使用`http.HandleFunc()`函数来定义一个处理GET请求的路由...

    CENTOS+KAFKA+GOLANG

    - **关闭防火墙**:`service iptables stop` 通过开启 FTP 服务,可以在主机与虚拟机之间高效传输文件,如后续所需的 Kafka 安装包等。 ##### 1.3 常用命令总结 - **文件/文件夹复制**:`cp <source> ...

    Golang 面试题汇编

    对已经关闭的的chan进行读写,会怎么样?为什么? 简单聊聊内存逃逸? 字符串转成byte数组,会发生内存拷贝吗? http包的内存泄漏 sync.Map 的用法 Golang 理论 Go语言的GPM调度器是什么? Goroutine调度策略 ...

    golang.org x net (内含http2)

    1. **二进制分帧**:HTTP/2将所有数据拆分为多个小的帧,每个帧都有自己的类型和标识符,这样可以并行处理多个请求和响应,解决了HTTP/1.x中的阻塞问题。 2. **多路复用**:通过单个TCP连接并发处理多个请求和响应...

    GoLang之使用Context控制请求超时的实现

    在现代软件开发中,尤其是基于微服务架构的应用程序设计中,处理网络请求及其超时问题是至关重要的。Go语言(也称为Golang)凭借其简洁高效的设计,成为了构建高性能网络应用的理想选择之一。在Go语言中,`context` ...

    Golang 发送http请求时设置header的实现

    ### Golang 发送HTTP请求时设置Header的实现 在现代Web开发中,HTTP协议作为客户端与服务器间通信的标准协议,其重要性不言而喻。而在Go语言(又称Golang)中,处理HTTP请求和响应变得更为简洁高效。本文将详细介绍...

    Golang HTTP 服务平滑重启及升级的思路

    Golang HTTP服务在上线时,需要重新编译可执行文件,关闭正在运行的进程,然后再启动新的运行进程。对于访问频率比较高的面向终端用户的产品,关闭、重启的过程中会出现无法访问(nginx表现为502)的情况,影响终端...

    Go-使用Golang编写基于LDAP的Web应用程序

    5. 关闭连接:完成操作后,使用`conn.Close`关闭连接。 在Web应用程序上下文中,这些操作通常在HTTP请求处理器中执行。你可以使用Go的`net/http`包来创建路由和处理器函数。例如,为登录页面创建一个处理器,接收...

    详解golang中发送http请求的几种常见情况

    在Golang中进行HTTP请求是一个常见需求,它广泛用于各种Web开发和API交互场景。Golang标准库中的`net/http`包为我们提供了发送HTTP请求的丰富接口。本文将详细介绍几种在Golang中发送HTTP请求的常见方式,并通过示例...

    go依赖包golang.org/x下的所有源码

    6. **syscall/**:系统调用接口,提供了操作系统级别功能的低级访问,例如打开、关闭文件,读写磁盘等。在需要更底层控制时,这个包会很有用。 7. **image/**:图像处理包,如`image/jpeg`和`image/png`用于读写...

    golang面试题集合.zip

    对已经关闭的的chan进行读写,会怎么样?为什么? 简单聊聊内存逃逸? 字符串转成byte数组,会发生内存拷贝吗? http包的内存泄漏 sync.Map 的用法 Golang 理论 Go语言的GPM调度器是什么? Goroutine调度策略 ...

    Go-smux是一个采用Golang开发的socket多路复用器

    5. **错误恢复**:当连接出现错误时,Go-smux能够检测并关闭有问题的流,而不会影响到其他正常运行的流。 在Go语言中,Go-smux库的使用简单直观,开发者可以方便地创建和管理流,进行数据的收发。由于其小巧且高...

    详解Golang开启http服务的三种方式

    在Golang中,`net/http`包提供了丰富的功能来创建HTTP服务器。本文将详细解析三种不同的方式来开启HTTP服务,并探讨每种方式的特点和应用场景。 ### 第一种方式:使用`http.HandleFunc` 这是最简单的HTTP服务器...

    Golang1.3官方标准包帮助(汉化)

    3. `os`包:提供操作系统级别的接口,如打开、关闭文件,读写文件,创建目录等,是进行文件操作的基础。 4. `net`包:处理网络通信,包括TCP、UDP、HTTP、FTP等各种协议,以及DNS查询等。 二、并发与多线程 Go...

Global site tag (gtag.js) - Google Analytics