Java FTPClient::retrieveFile处的套接字异常

Java FTPClient::retrieveFile处的套接字异常,java,apache-commons-net,Java,Apache Commons Net,我有一个应用程序,应该连接到ftp服务器并下载文件。几个月前,一切正常,但现在我想更改一些部分并在retrieveFile中获得异常: FTPClient ftp=ConnectToServer(); OutputStream stream = new FileOutputStream("TempServerLog.txt"); ftp.retrieveFile(FileName, stream); 这是StackTrace: java.net.SocketOutputStream.socke

我有一个应用程序,应该连接到ftp服务器并下载文件。几个月前,一切正常,但现在我想更改一些部分并在retrieveFile中获得异常:

FTPClient ftp=ConnectToServer();
OutputStream stream = new FileOutputStream("TempServerLog.txt");
ftp.retrieveFile(FileName, stream);
这是StackTrace:

java.net.SocketOutputStream.socketWrite0(Native Method)
java.net.SocketOutputStream.socketWrite(Unknown Source)
java.net.SocketOutputStream.write(Unknown Source)
sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
sun.nio.cs.StreamEncoder.flush(Unknown Source)
java.io.OutputStreamWriter.flush(Unknown Source)
java.io.BufferedWriter.flush(Unknown Source)
org.apache.commons.net.ftp.FTP.__send(FTP.java:501)
org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:475)
org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:552)
org.apache.commons.net.ftp.FTP.port(FTP.java:877)
org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:709)
org.apache.commons.net.ftp.FTPClient._retrieveFile(FTPClient.java:1677)
org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1669)
Util.FtpServer.DownloadConfigurationFile(FtpServer.java:83)
Main.main(Main.java:40)
sendCommand中的命令是“端口127,0,0,1192226\r\n”。我在Win7机器上使用FileZilla FTP服务器。服务器运行正常,我可以使用具有相同用户名/Pw的FileZilla客户端

服务器日志告诉我:

(not logged in) (127.0.0.1)> Connected, sending welcome message...
(not logged in) (127.0.0.1)> 220-FileZilla Server version 0.9.37 beta
(not logged in) (127.0.0.1)> 220 Lokaler Test FTP Server - have fun!
(not logged in) (127.0.0.1)> USER peter
(not logged in) (127.0.0.1)> 331 Password required for peter
(not logged in) (127.0.0.1)> PASS 
peter (127.0.0.1)> 230 Logged on
peter (127.0.0.1)> disconnected.
因此,我可以成功登录,但在检索文件的过程中断开了连接

我仍然有一个旧版本的已编译jar,可以与本地服务器一起使用。我还尝试将ApacheCommonsNet从2.2(我在启动项目时使用的)更新到当前版本3.1,但错误仍然是一样的


我还从我的git回购项目中检查了一个旧版本,它现在也有同样的问题。我在这个项目中使用了一个额外的Eclipse安装,所以整个环境不应该被改变,但我仍然得到了这个套接字错误。

它表明,Windows防火墙导致了这个问题。此外,它应该只在公共网络中处于活动状态,因为它可能会在我连接到本地主机时以某种方式导致问题。完全停用后,我的程序开始工作。

您可以发布堆栈跟踪吗?另外,您是否在任何时候进入被动模式?我添加了堆栈跟踪。我不使用被动模式,只使用简单的基本功能。我会尝试进入被动模式ftp.enterLocalPassiveMode()。如果这仍然是一个问题,您可能希望尝试下载ftpclient示例,看看它是否能够连接。这是一个非常完整的示例,您可以对其进行修改和构建。