Golang - 劫持参数

Kim*_*yer 4 http go go-http

在实例中使用Hijack()http.ResponseWriter

Hijack() (net.Conn, *bufio.ReadWriter, 错误)

read from thenet.Conn和 the 和有*bufio.ReadWriter什么不一样?

Jim*_*imB 5

net.Conn.Read并且*bufio.ReadWriter.Read都从同一个连接读取,但后者被缓冲。所述Hijack在标准的“净/ HTTP”封装的方法直接返回net.Conn包裹在一个bufio.ReadWriter,使用相同的*bufio.Reader一个已经分配给HTTP请求。

bufio.Reader直接从网络连接读取时,您可能会错过其中的缓冲数据。如果你想net.Conn直接使用,你应该检查是否已经有缓冲的数据Reader.Buffered,并根据所使用的协议进行处理。

通常,您应该更喜欢使用bufio.ReadWriter,因为它对于非最佳大小的网络读取和写入效率更高。

net.Conn仍然需要处理的读取和写入的最后期限,关闭net.Conn时,即可大功告成,以及任何其他特定的网络活动。