java.net.SocketException: Connection reset 异常原因分析和解决方法

Connection reset : 一般是客户端正在从服务器读数据时或者向服务器写数据时,服务器连接关闭,通过tcpdump抓包可以看到,返回了一个RST复位标志,导致连接重置。

导致此异常的原因,总结下来有三种情况:

1.服务器端偶尔出现了异常,导致连接关闭

解决方法: 采用出错重试机制

2.服务器端和客户端使用的连接方式不一致

解决方法:服务器端和客户端使用相同的连接方式,即同时使用长连接或短连接

3.如果是HTTPS,那么还存在TLS版本不一致

解决方法:服务器端和客户端使用相同的TLS版本

附录:JDK中对 HTTPS 版本的支持情况:
JDK 6
    SSL v3
    TLS v1(默认)
    TLS v1.1(JDK6 update 111 及以上)
JDK 7
    SSLv3
    TLS v1(默认)
    TLS v1.1
    TLS v1.2
JDK 8
    SSL v3
    TLS v1
    TLS v1.1
    TLS v1.2(默认)

如果客户端JDK是1.7,服务器端要求TLSv1.2,那么在启动参数加上-Dhttps.protocols=TLSv1.2即可。

或者代码指定TLS版本 System.setProperty("https.protocols", "TLSv1.2");

转载于:https://my.oschina.net/wangwang110/blog/3041641

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.net.SocketException: Connection reset 是一个常见的网络异常,它表示在尝试建立或使用网络连接时,远程主机强制关闭了连接。这种情况通常发生在以下几种情况下: 1. 服务器端关闭了连接:可能是服务器端程序出现了异常或者主动关闭了连接。解决方法是检查服务器端程序的日志,确保服务器端程序正常运行,并且没有异常导致连接被关闭。 2. 网络问题:可能是网络中断、防火墙设置、代理服务器等原因导致连接被重置。解决方法是检查网络连接是否正常,尝试使用其他网络环境进行连接,或者联系网络管理员解决网络问题。 3. 客户端和服务器端的协议不匹配:可能是客户端和服务器端使用的协议版本不一致导致连接被重置。解决方法是确保客户端和服务器端使用相同的协议版本,或者更新客户端和服务器端的软件版本以支持相同的协议。 4. 连接超时:可能是连接超时时间设置过短导致连接被重置。解决方法是增加连接超时时间,以便更充分地建立连接。 5. 其他原因:可能是其他未知的原因导致连接被重置。解决方法是根据具体情况进行排查,可以查看详细的异常堆栈信息,以便更准确地定位问题。 总之,解决 java.net.SocketException: Connection reset方法需要根据具体情况进行排查和调试,找出导致连接重置的原因,并采取相应的措施进行修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值