繁体   English   中英

java.net.SocketTimeoutException:在 FTPClient.listFiles 读取超时

[英]java.net.SocketTimeoutException: Read timed out at FTPClient.listFiles

我正在尝试使用 Apache Commons Net FTPSClient 和下面的代码在 FTP 服务器上列出 CurrentWorkingDirectory 中的文件。 我能够使用 WinSCP 成功连接和下载文件。

        FTPSClient client = new FTPSClient(true);
        client.setDefaultTimeout(defaultTimeout);
        client.setConnectTimeout(connectTimeout);
        client.setDataTimeout(dataTimeout);
        
        client.connect(server, 990);
        int replyCode = client.getReplyCode();
        if (!FTPReply.isPositiveCompletion(replyCode)){
            LOG.error("Unable to connect to server. Error Text=" + client.getReplyString());
        }
        
        if (localActive) {
            setLocalActiveMode();
        } else {
            setLocalPassiveMode();
        }
        
        boolean status = client.login(user, password);
        if (!status) {
            replyCode = client.getReplyCode();
            LOG.error("Login failed. Error Text=" + client.getReplyString());
        }
        setBinaryMode(binaryMode);
        client.changeWorkingDirectory(path);
        
        FTPFile[] files = client.listFiles();
        for (FTPFile file : files) {

引发的异常:

java.net.SocketTimeoutException: Read timed out
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
   at java.net.SocketInputStream.read(SocketInputStream.java:171)
   at java.net.SocketInputStream.read(SocketInputStream.java:141)
   at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
   at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
   at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
   at java.io.InputStreamReader.read(InputStreamReader.java:184)
   at java.io.BufferedReader.fill(BufferedReader.java:161)
   at java.io.BufferedReader.readLine(BufferedReader.java:324)
   at java.io.BufferedReader.readLine(BufferedReader.java:389)
   at org.apache.commons.net.ftp.FTPFileEntryParserImpl.readNextEntry(FTPFileEntryParserImpl.java:53)
   at org.apache.commons.net.ftp.FTPListParseEngine.readStream(FTPListParseEngine.java:128)
   at org.apache.commons.net.ftp.FTPListParseEngine.readServerList(FTPListParseEngine.java:104)
   at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3302)
   at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)
   at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2930)
   at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2977)

WinSCP 会话日志

WinSCP 会话日志续..

WinSCP 会话日志续..

Apache Commons Net 日志文件

我将保护缓冲区大小设置为 0 并使用了私有数据连接(下面的代码并有效) client.execPBSZ(0); client.execPROT("P");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM