使用 Hijack() 时使用 http.ResponseWriter
实例
Hijack() (net.Conn, *bufio.ReadWriter, error)
从net.Conn
读取和从*bufio.ReadWriter
读取有什么区别?
最佳答案
net.Conn.Read
和 *bufio.ReadWriter.Read
都从同一个连接读取,但后者是缓冲的。标准“net/http”包中的Hijack
方法直接返回包裹在bufio.ReadWriter
中的net.Conn
,使用相同的*bufio.Reader
已经为 http 请求分配了。
bufio.Reader
中可能仍有缓冲的数据,您在直接从网络连接读取时可能会错过这些数据。如果你想直接使用net.Conn
,你应该用Reader.Buffered
检查是否有缓冲数据。 ,并根据正在使用的协议(protocol)进行处理。
一般来说,您应该更喜欢使用 bufio.ReadWriter
,因为对于非最佳大小的网络读取和写入,它会更有效。
net.Conn
仍然需要处理读取和写入的截止时间,完成后关闭 net.Conn
,对于任何其他网络-具体事件。
关于http - Golang - 劫持参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35562820/