我正在使用 ftp apache's commomns net version 3.1 。
ftp 连接在执行 INTERMITTENTLY 列表操作时处于挂起状态。
我感觉如此的原因似乎是 ftp 客户端在尝试打开数据连接以进行列表操作时,一直在无限期地等待服务器对 FTP 命令 PASV 的响应。
我如何需要在控制连接上设置读取超时以避免这种情况。
我已经使用 setDataTimeout() 在数据连接上设置了 readtimeout。
1) ftp connect() 操作后设置setsoTimeout() 是否有助于避免控制连接出现这种情况?
2)如果是这样,我需要为 setotimeout() 设置的最佳超时值是多少?
请在下面找到堆栈跟踪:
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:140)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:464)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:506)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:234)
at java.io.InputStreamReader.read(InputStreamReader.java:188)
at java.io.BufferedReader.fill(BufferedReader.java:147)
at java.io.BufferedReader.read(BufferedReader.java:168)
at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58
)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:310)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:290)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:479)
at org.apache.commons.net.ftp.FTPClient.openDataConnection(FTPClient.java:7
69)
at org.apache.commons.net.ftp.FTPClient.openDataConnection(FTPClient.java:6
57)
at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:
3097)
at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:
3072)
at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:
2972
对此的任何帮助将不胜感激:)
谢谢。