Golang TCP错误wsarecv

Ulu*_*yev 2 tcp go

我正在编写一个监听的应用程序tcp connection(参见此示例).当tcp connection 断开连接时我收到错误read tcp ip_server.:port1->ip_client:port2: wsarecv: An existing connection was forcibly closed by the remote host. 我预期错误EOF和超时(for 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 
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道这个错误?你知道如何捕获此错误以及何时发生此错误?提前致谢 !

use*_*421 7

此错误的常见原因是您通过已由对等方关闭的连接发送数据.换句话说,应用程序协议错误.

  • @ Ulug'bekRo'zimboyev,有两种简单的方法可以找到:a)查看Go`net`包源或b)使用`log.Printf("%T%+ v",err,err)`来格式化/当错误发生时,打印出"错误"中包含的完整类型和完整信息,这将告诉您需要用什么代码来替换`Printf`. (3认同)