Golang TCP 错误 wsarecv
Posted
技术标签:
【中文标题】Golang TCP 错误 wsarecv【英文标题】:Golang TCP error wsarecv 【发布时间】:2015-11-29 03:57:27 【问题描述】:我正在编写一个监听tcp connection
(见this example)的应用程序。当tcp connection
断开连接时出现错误read tcp ip_server.:port1->ip_client:port2: wsarecv: An existing connection was forcibly closed by the remote host.
我预计会出现错误 EOF
和超时(对于 conn.SetReadDeadline()
)并尝试使用此代码捕获错误:
if err != nil
log.Println("getting error from listener")
// I thought, listener can continue work another cases
if neterr, ok := err.(net.Error); ok && neterr.Timeout() || err == io.EOF
log.Println("Closing connection...")
break // connection will be closed
有人知道这个错误吗?您知道如何捕获此错误以及何时发生此错误吗?提前致谢!
【问题讨论】:
不是 Go 而是同样的错误:***.com/questions/2582036/… 【参考方案1】:此错误的通常原因是您通过已被对等方关闭的连接发送数据。换句话说,应用程序协议错误。
【讨论】:
@Ulug'bekRo'zimboyev,两种简单的查找方法:a) 查看 Gonet
包源或 b) 使用 log.Printf("%T %+v", err, err)
格式化/打印完整类型和完整err
中包含的信息,当它发生时,它将告诉您需要用什么代码替换 Printf
。
您找到此消息的类型了吗?
我得到*net.OpError read tcp ip_server.:port1->ip_client:port2: wsarecv: An existing connection was forcibly closed by the remote host.
,所以消息的类型应该是*net.OpError
。
@Ulug'bekRo'zimboyev 最终它是 ECONNRESET。我不知道 go 中映射到什么,但你可以查一下。
当我通过kubectl -n argo-events port-forward deployment/argo-server 2746:2746
转发Argo服务器的端口时有时会发生这种情况如何解决?以上是关于Golang TCP 错误 wsarecv的主要内容,如果未能解决你的问题,请参考以下文章
golang 在下载依赖包的时候出现错误:dial tcp 142.251.42.241:443: i/o timeout
Golang 网络编程丝绸之路 - TCP/UDP 地址解析