我有一个应该连接到FTP服务器的应用程序下载一个文件。几个月前,一切运行良好,但现在我想改变一些地方和retrieveFile得到例外:在FTPClient :: retrieveFile上的套接字异常
FTPClient ftp=ConnectToServer();
OutputStream stream = new FileOutputStream("TempServerLog.txt");
ftp.retrieveFile(FileName, stream);
这是堆栈跟踪:
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的命令是“PORT 127, 0,0,1,192,226 \ r \ n”。我在Win7机器上使用FileZilla FTP服务器。服务器运行良好,我可以使用具有相同用户名/密码的FileZilla Client。
的SERVERLOG告诉我:
(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,它与我的本地服务器配合工作。我也尝试从2.2版本(我开始使用该项目时)更新Apache-Commons-net到当前的3.1版本,但错误依然存在。
我也检查了一个旧版本从我的项目git回购它现在有同样的问题。我为这个项目使用了一个额外的Eclipse安装,所以整个环境不应该改变,但我仍然得到这个套接字错误。
你可以发布堆栈跟踪吗? – Mike 2012-07-30 13:30:03
另外,你是否在任何时候都进入被动模式? ftp.enterLocalPassiveMode() – Mike 2012-07-30 13:36:43
我添加了堆栈跟踪。我不使用被动模式,只是简单的基本功能。 – JonathanK 2012-07-30 20:41:53