Ftp.listFiles()报错NoSuchMethodError,如何解决?

2024-12-19 20:24:11
推荐回答(1个)
回答1:

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

原因:服务端将连接关闭了(可能发生了异常),但客户端还在接收数据。

总结产生原因,在服务端/客户端单方面关闭连接的情况下,另一方依然以为
tcp连接仍然建立,试图读取对方的响应数据,导致出现
Software caused connection abort: recv failed的异常.

因此在receive数据之前,要先判断连接状态.
通过inputstream的available()方法来判断,是否有响应结果.
如果available()的返回值为0,说明没有响应数据,可能是对方已经断开连接,
如果available()的返回值大于0,说明有响应数据.
另外值得注意的是available()返回的值是非堵塞的,可以被多个线程访问