java.net.SocketTimeoutException:读取超时的原因是什么

java.net.SocketTimeoutException:读取超时的原因是什么,java,ftp,socketexception,connection-timeout,Java,Ftp,Socketexception,Connection Timeout,我编写了一个连接FTP的java代码。我使用ftp4j-1.7.2jar通过java连接FTP。我使用了字符串[]“it.sauronsoftware.ftp4j.FTPClient.connect(字符串arg0)”和“it.sauronsoftware.ftp4j.FTPClient.disconnect(布尔arg0)”连接和断开FTP的方法。在java 1.5中运行代码时,代码运行正常,但在java 1.6中运行代码时,代码在断开连接时抛出“java.net.SocketTimeoutE

我编写了一个连接FTP的java代码。我使用
ftp4j-1.7.2
jar通过java连接FTP。我使用了字符串[]“it.sauronsoftware.ftp4j.FTPClient.connect(字符串arg0)”和“it.sauronsoftware.ftp4j.FTPClient.disconnect(布尔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)

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

-Djava.net.preferIPv4Stack=true 

这意味着在超时期间没有数据到达。在这种情况下,没有对断开连接请求的响应。很明显,您正在使用的库正在设置读取超时,或者您正在设置,但它太短,请查看是否可以增加它


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

您正在尝试连接,但服务器不可用,或者您的URL错误否当我在java 1.5中运行代码时,我可以成功连接和断开连接,当我们在java 1.6中运行代码时,我们可以连接,但我们无法disconnect@anfy2002us从堆栈跟踪中可以清楚地看到这一点他试图断开连接,这意味着他的连接成功,因此服务器可用,他的URL也正确。请务必阅读这个问题。我是在调试一个JAVA应用程序之后来到这里的,在这个应用程序中,这个错误是由堆内存不足导致的。这里可能不是这样,但这是一个需要调查的指针。这不是一个答案,而是一个注释。IPv6问题会导致连接问题,而不是在断开连接期间读取超时-1但是我能够在java 1.5中运行它,但是面对java 1.6的问题,我想知道会出现什么问题。