java实现ftpServer及被动模式PASV测试

2020-12-23 22:08:00
1147533288
原创
2881

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