如何知道哪个连接在 "use of closed network connection" 错误中关闭

How to know which connection closed in "use of closed network connection" error

我在 Go 中使用 io.Copy

代理 TCP 连接
_, err := io.Copy(src, dst)
if err != nil {
   log.Println(err)
}

并且一个连接关闭因此发送此错误:

readfrom tcp 171.31.80.49:10000->88.39.116.204:56210: use of closed network connection

我怎么知道关闭了哪个网络连接?即 171.31.80.49:1000088.39.116.204:56210.

一个TCP连接是一对IP和端口对。在您的情况下,连接是 171.31.80.49:10000->88.39.116.204:56210。它是连接,它是关闭的。没有连接 171.31.80.49:1000088.39.116.204:56210.

您的示例中有两个连接:srcdst(顺便说一下,您将它们命名错误:https://pkg.go.dev/io#Copy)。如果您的问题是哪个连接正在关闭,那么根据错误消息,它是 dst(应该命名为 src)。

为什么?因为消息说:readfrom ...,当 io.Copy 从 Reader 读取时发生错误,在我们的例子中是 dst.