java.net.SocketException: Software caused connection abort

[size=medium]原因分析可以看TCP关闭状态详解
https://www.cnblogs.com/borey/p/5626124.html

上图是tcp连接被动关闭方的状态转换图
[color=red](1)收到对端FIN后,关闭读通道进入CLOSE_WAIT状态[/color]
(2)在CLOSE_WAIT状态等待应用层调用close函数关闭连接
(3)如果在超时时间内调用了close,则进入LAST_ACK状态;否则直接进入CLOSED状态
(4)在LAST_ACK状态,发送FIN到对端并等待对端的确认ACK
(5)如果在超时时间内收到了确认ACK则进入CLOSED状态,否则直接进入CLOSED状态[/size]
[size=large]
下面是我的测试结果,和文章讲解相符
1:java.net.SocketException: Software caused connection abort: recv failed
[color=blue]对端调了close,本地还在对应的socket上读[/color]
[color=red]注意:这个异常马上就会抛出,因为读通道已经关闭[/color]

2.java.net.SocketException: Software caused connection abort: socket write error
[color=blue]对端调了close,本地还在对应的socket上写[/color]
[color=red]注意:这个异常不会马上抛出,也就是不会马上感知到,要隔一段时间再写数据才会抛出,
如果本地一直在写数据,则前面的不会抛异常,后面的才会抛异常。[/color]
[/size]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值