java实现ftpServer及被动模式PASV测试
- 2020-12-23 22:08:00
- 1147533288 原创
- 2879
1.依赖
<dependency> <groupId>org.apache.ftpserver</groupId> <artifactId>ftpserver-core</artifactId> <version>1.1.0</version> </dependency>2.java启动服务
public static boolean initFtp() throws FtpException{
try{
FtpServerFactory serverFactory = new FtpServerFactory();
ListenerFactory listenerFactory = new ListenerFactory();
PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
UserManager userManager = userManagerFactory.createUserManager();
BaseUser user = new BaseUser();
user.setEnabled(true);
user.setName("admin");
user.setPassword("admin");
String homeDirectory = "d:\\temp";
if (StringUtils.isNotEmpty(homeDirectory)){
File file = new File(homeDirectory);
if (!file.exists()) {
file.mkdirs();
}
}
user.setHomeDirectory(homeDirectory);
userManager.save(user);
serverFactory.setUserManager(userManager);
DataConnectionConfigurationFactory dccFactory = new DataConnectionConfigurationFactory();
dccFactory.setPassiveIpCheck(true);
dccFactory.setPassiveExternalAddress("127.0.0.1");
dccFactory.setPassivePorts("60022");
DataConnectionConfiguration dcc = dccFactory.createDataConnectionConfiguration();
listenerFactory.setDataConnectionConfiguration(dcc);
listenerFactory.setPort(Integer.valueOf("21").intValue());
serverFactory.addListener("default", listenerFactory.createListener());
FtpServer server = serverFactory.createServer();
server.start();
return true;
}
catch (Exception e){
e.printStackTrace();
}
return false;
}
3.测试,根据该篇文章,完美。
https://www.cnblogs.com/zh2000g/archive/2010/03/02/1676653.html
4.补充,如何根据被动模式返回数据换算数据端口号
服务器端返回的数据是127,0,0,1,5,20,包括了服务器端IP和数据端口号
服务器IP: 127.0.0.1
数据端口号: 5×256+20=1300
文章分类
联系我
| 联系人: | meepo |
|---|---|
| 电话: | ***** |
| Email: | 1147533288@qq.com |
| QQ: | 1147533288 |