我正在使用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)
我不能从这里前进......
答案 0 :(得分:3)
"有趣的编码" ..
答案 1 :(得分:0)
代码看起来很好(并且运行正常),因此它可能是您的网络设置中的一部分。尝试更改" 192.168.1.110"地址为" localhost"在客户端和服务器中,看看是否有效。如果是,那么您需要调查您的网络设置。
答案 2 :(得分:0)
这是由于使用 ftp 服务器设置的“被动”模式导致了此问题。