我编写了一个连接FTP的java代码。我使用ftp4j-1.7.2
jar通过java连接FTP。我使用了String []" it.sauronsoftware.ftp4j.FTPClient.connect(字符串arg0)"和" it.sauronsoftware.ftp4j.FTPClient.disconnect(boolean arg0)"从FTP连接和断开连接的方法。当我在java 1.5中运行代码时,代码工作正常,但它正在抛出" java.net.SocketTimeoutException:read timed out &#34 ;当我在java 1.6中运行它时断开连接。任何人都可以让我知道解决方案。
错误日志:
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)
答案 0 :(得分:2)
这可能是一个隧道问题。试试这个标志:
-Djava.net.preferIPv4Stack=true
答案 1 :(得分:0)
这意味着在超时期间没有数据到达。在这种情况下,没有回复断开请求。很明显,你正在使用的库是设置读取超时,或者你是,并且它太短,看看你是否可以增加它。
我无法解释不同JDK的不同行为,除非在某处有读取超时修复,但我从来没有意识到任何读取超时问题,我一直回到1.1。 2。