创建FTP客户端登录问题在java中

时间:2014-12-31 12:17:30

标签: java apache ftp

我正在使用commons.net api来创建与FTP服务器的连接。简单的代码,如

String Path = "D:\\FTP";
File ftpDirectory = new File(Path);
ftpDirectory.mkdirs();

FtpServerFactory serverFactory = new FtpServerFactory();
ListenerFactory factory = new ListenerFactory();
factory.setPort(2221); 
factory.setServerAddress("192.168.1.110");

serverFactory.addListener("default", factory.createListener());
PropertiesUserManagerFactory userFactory = new PropertiesUserManagerFactory();
File userFile = new File("D:\\FTP\\users.properties");
userFactory.setFile(userFile);

//UserManager um = userFactory.createUserManager();
UserManager um =new PropertiesUserManager(new ClearTextPasswordEncryptor(),userFile,"admin");
BaseUser user = new BaseUser();
user.setName("test");
user.setPassword("test");
user.setHomeDirectory(Path);
um.save(user);

serverFactory.setUserManager(um);

FtpServer ftpServer = serverFactory.createServer();
ftpServer.start();

FTPClient登录如下所示

        FTPClient ftp = new FTPClient();
        ftp.connect("192.168.1.110",2221);
        System.out.println("connect done");
        String loging_success = ftp.login("test", "test") == true ? "success" : "failed"; 
        System.out.println("login: "+ loging_success);

但是我发现登录服务器时遇到了麻烦。 我可以轻松启动服务器但无法登录到服务器.. 我的输出看起来像

  

连接完成

很长一段时间后得到例外

  

org.apache.commons.net.ftp.FTPConnectionClosedException:连接   关闭没有指示。在   org.apache.commons.net.ftp.FTP .__ getReply(FTP.java:313)at   org.apache.commons.net.ftp.FTP .__ getReply(FTP.java:290)at   org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:474)at   org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:547)at   org.apache.commons.net.ftp.FTP.user(FTP.java:693)at   org.apache.commons.net.ftp.FTPClient.login(FTPClient.java:872)at at   TestFTPServer.connectServer(TestFTPServer.java:213)at   TestFTPServer.main(TestFTPServer.java:52)

我不能从这里前进......

3 个答案:

答案 0 :(得分:3)

抱歉打扰你,但我终于找到了解决方案.. 这是我的愚蠢错误..我使用commons.net-3.0版本,当我将该jar升级到最新版本,例如commons.net-3.3错误完全消失了...所以如果你得到这个错误只是像那样升级你的罐子..

"有趣的编码" ..

答案 1 :(得分:0)

代码看起来很好(并且运行正常),因此它可能是您的网络设置中的一部分。尝试更改" 192.168.1.110"地址为" localhost"在客户端和服务器中,看看是否有效。如果是,那么您需要调查您的网络设置。

答案 2 :(得分:0)

这是由于使用 ftp 服务器设置的“被动”模式导致了此问题。