现在的位置: 首页 > 综合 > 正文

Software caused connection abort: recv failed

2016年11月27日 ⁄ 综合 ⁄ 共 552字 ⁄ 字号 评论关闭

 Software
caused
connection
abort: recv
failed

java
.net
.SocketException: Software
caused
connection
abort: recv
failed

at java
.net
.SocketInputStream.socketRead0(Native Method)

at java
.net
.SocketInputStream.read(SocketInputStream.java
:32)

产生这个异常的原因有多种方面

是由于程序编写的问题,而不是网络的问题引起的.

总结产生原因,在服务端/客户端单方面关闭连接的情况下,另一方依然以为

tcp连接仍然建立,试图读取对方的响应数据,导致出现

Software
caused
connection
abort: recv
failed
的异常.

因此在receive数据之前,要先判断连接状态.

通过inputstream的available()方法来判断,是否有响应结果.

如果available()的返回值为0,说明没有响应数据,可能是对方已经断开连接,

如果available()的返回值大于0,说明有响应数据.

另外值得注意的是available()返回的值是非堵塞的,可以被多个线程访问

在对方释放连接后,也要释放本地的连接.

 

抱歉!评论已关闭.