如何知道“使用已关闭的网络连接”错误中关闭了哪个连接

vir*_*nde 3 networking tcp go

我在 Go 中使用代理 TCP 连接io.Copy

_, err := io.Copy(src, dst)
if err != nil {
   log.Println(err)
}
Run Code Online (Sandbox Code Playgroud)

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

readfrom tcp 171.31.80.49:10000->88.39.116.204:56210: use of closed network connection
Run Code Online (Sandbox Code Playgroud)

我如何知道哪个网络连接已关闭?即171.31.80.49:1000088.39.116.204:56210

And*_*lov 6

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)。

为什么?因为消息显示: ,所以当正在从 Reader 读取时(在我们的例子中为 ),readfrom ...会发生错误。io.Copydst