FTPServer代码建立通道(注意这是服务端)

最近项目有个要求,本地建立个FTP服务器用来进行获取一些数据文件之类的。
首先我们需要导几个jar包。点击获取jar包提取码: 7kpq
将jar包添加进项目,都会做,然后就上代码吧:


public class FTPServer {
    String dirname="";
    private static FtpServer mFtpServer;
    //获取id地址
    public static String getLocalIpAddress(){

        try {
            ArrayList<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface networkInterface : interfaces){
                ArrayList<InetAddress> addresses = Collections.list(networkInterface.getInetAddresses());
                for (InetAddress address : addresses){
                    if (!address.isLoopbackAddress()){
                        String strAddress = address.getHostAddress().toUpperCase();
                        boolean isipv4 = Isipv4(strAddress);
                        if (isipv4){
                            return strAddress;
                        }
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }

        return null;
    }
    //检测IP地址
    private static boolean Isipv4(String ipv4){
        if (ipv4 == null || ipv4.length() == 0){
            return false;
        }
        String[] parts = ipv4.split("\\.");
        if (parts.length != 4){
            return false;
        }
        for (String part : parts){
            int n = Integer.parseInt(part);
            if (n<0 || n> 255){
                return false;
            }
        }
        return true;
    }
    public static void startFtpServer(){
        FtpServerFactory serverFactory = new FtpServerFactory();
        ListenerFactory factory = new ListenerFactory();
        serverFactory.addListener("default",factory.createListener());
        factory.setPort(1234);//这里设置一个端口号
        factory.setServerAddress("192.168.12.12");//这里设置一个IP地址,如果你不固定就可以获取当前IP地址也就是最上面的方法在这里填上。
        serverFactory.addListener("default",factory.createListener());
        BaseUser user = new BaseUser();
        user.setName("我是用户名");//注意这里相当于服务端给客户端创建了一个可以直接连接的用户名
        user.setPassword("密码");//这里则是对应用户名的密码
        user.setEnabled(true);
        user.setMaxIdleTime(3000);
          user.setHomeDirectory(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator);
        ArrayList<Authority> authorities = new ArrayList<>();
        authorities.add(new WritePermission());
        user.setAuthorities(authorities);
        try {
            serverFactory.getUserManager().save(user);
        } catch (FtpException e) {
            e.printStackTrace();
        }
        if (mFtpServer!=null){
            mFtpServer.stop();
        }
        mFtpServer = serverFactory.createServer();
        try {
            mFtpServer.start();
            // mHandler.sendEmptyMessage(0x0001);
        } catch (FtpException e) {
            e.printStackTrace();
        }


    }
    public static void stopFtpServer(){//判断服务器是否打开了 这里我的需求是要一直打开所以重复调用了,但是平常来说,我们不需要服务器的时候就需要关闭,否则确实占用资源,如果需要关闭可以不调用startFtpServer();
        if (mFtpServer !=null){
            mFtpServer.stop();
            mFtpServer=null;
            startFtpServer();
        }else {
            startFtpServer();
        }
    }

以上代码配合注释肯定可以理解。
如果是使用本地IP地址的话其实可以调用最上面的检测IP地址方法,然后在设置IP地址时将检测的IP地址结果设置上去就可以。
(注意Android版本号的适配以及权限设置)
当然也可以下载一些ftp服务端或者ftp客户端工具去检测测试。也可以在本地电脑配置一个FTP服务器检测。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ABClooklook

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值