1

我已经编写了一个 java 代码来ftp4j-1.7.2连接 FTP。我使用 jar 通过 java 连接 FTP。我使用了 String[]“ it.sauronsoftware.ftp4j.FTPClient.connect(String arg0) ”和“ it.sauronsoftware.ftp4j.FTPClient。 disconnect(boolean arg0) " 连接和断开 FTP 的方法。当我在 java 1.5 中运行它时代码工作正常,但是当我在 java 1.6 中运行它时它在断开连接时抛出 " java.net.SocketTimeoutException: Read timed out "。任何人都可以让我知道解决方案。

错误日志:

Stack:
    java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
    at sun.nio.cs.StreamDecoder.read0(StreamDecoder.java:107)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:93)
    at java.io.InputStreamReader.read(InputStreamReader.java:151)
    at it.sauronsoftware.ftp4j.NVTASCIIReader.readLine(NVTASCIIReader.java:105)
    at it.sauronsoftware.ftp4j.FTPCommunicationChannel.read(FTPCommunicationChannel.java:142)
    at it.sauronsoftware.ftp4j.FTPCommunicationChannel.readFTPReply(FTPCommunicationChannel.java:187)
    at it.sauronsoftware.ftp4j.FTPClient.disconnect(FTPClient.java:1133)
4

2 回答 2

2

这可能是 IPv 问题。试试这个标志:

-Djava.net.preferIPv4Stack=true 
于 2013-10-15T22:49:08.820 回答
0

这意味着在超时期间没有数据到达。在这种情况下,不回复断开连接请求。显然您正在使用的库正在设置读取超时,或者您可能是,并且它太短了,看看您是否可以增加它。

我无法解释不同 JDK 的不同行为,除非某处修复了读取超时,但我从来没有意识到任何读取超时问题,我一直回到 1.1.2。

于 2013-10-15T23:07:45.107 回答