java进阶(10)——SocketException:Connetion reset
连接重置意味着收到了TCP RST。TCP RST包是指server端告诉你发送前一个TCP包的连接不被识别,可能连接已经关闭,可能端口没有打开,诸如此类。一个重置包就是没有有效负载并且在TCP报头标志中设置了RST位的包。出现这个Connetion reset报错,主要有以下几种情况:server端已经正常关闭;server端发送了一个Reset包给到client端,可能是连接中断,或者是端口关
·
连接重置意味着收到了TCP RST。TCP RST包是指server端告诉你发送前一个TCP包的连接不被识别,可能连接已经关闭,可能端口没有打开,诸如此类。一个重置包就是没有有效负载并且在TCP报头标志中设置了RST位的包。
出现这个Connetion reset
报错,主要有以下几种情况:
- server端已经正常关闭;
- server端发送了一个
Reset
包给到client端,可能是连接中断,或者是端口关闭; - TCP(传输控制协议)套接字被关闭,因为套接字收到了来自server端的关闭命令;
- 另一端故意重置了连接。应用软件这样做的情况很少发生,而且通常是不正确的,但对于商业软件来说也不是未知的。
- 当套接字接收缓冲区中有未读数据时,关闭套接字也可能导致该错误。
- 在某些情况下,中间的防火墙甚至远程主机本身可能“忘记”这个TCP连接。如果此TCP连接很长时间没有发送任何数据(120分钟是常见的超时时间),或者因为某一端重新启动并丢失了有关活动连接的信息,就会发生这种情况。在这些失效连接中发送数据也会导致RST。
- 有时这也可能是由于沉重的负载导致Server对消息进行排队,在它能够读取消息之前,消息在客户端超时。因此,您还可以检查服务器健康状况并记录导致此错误的过度负载。
PS:文中说的server端和client端,只是一个相对的概念,请读者别纠结。
更多推荐
已为社区贡献1条内容
所有评论(0)