英文:
Golang TCP error wsarecv
问题
我正在编写一个应用程序,它监听 tcp 连接(参见这个示例)。当一个 tcp 连接 断开时,我得到了错误信息 read tcp ip_server.:port1->ip_client:port2: wsarecv: 远程主机强制关闭了一个现有的连接。
我预期会出现错误 EOF 和超时(对于 conn.SetReadDeadline()),并尝试使用以下代码捕获错误:
if err != nil {    	
	log.Println("从监听器获取错误")
    // 我认为,监听器可以继续处理其他情况
	if neterr, ok := err.(net.Error); ok && neterr.Timeout() || err == io.EOF {
		log.Println("关闭连接...")
		break // 连接将被关闭
	}
}
有人了解这个错误吗?你知道如何捕获这个错误以及何时会发生这个错误吗?提前谢谢!
英文:
I am writing an app which listens tcp connection (see this example) . When a tcp connection  disconnected I got error read tcp ip_server.:port1->ip_client:port2: wsarecv: An existing connection was forcibly closed by the remote host.
I expected error EOF and timeout(for conn.SetReadDeadline()) and tried to catch error with this code:
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 
	}
}
Anyone knows about this error? Do you know how to catch this error and when this error will occured ? Thanks in advance !
答案1
得分: 7
这个错误通常是由于您在连接已被对方关闭后发送了数据引起的。换句话说,这是一个应用程序协议错误。
英文:
The usual cause of this error is that you sent data over a connection which had already been closed by the peer. In other words, an application protocol error.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论