`

Android使用ApacheFtpServer实现Ftp服务器(增加用户验证)

阅读更多
为了方便在Android手机和PC电脑之间文件传输和管理,于是想在Android上建立FTP服务器来实现文件访问及管理操作。从网上找到这个例子后开始使用,结果发现,死活都登录不了,配置不了用户名和密码,匿名登录也登不上,给我急的啊,后来看了一下FTPServer的源码发现需要一个配置文件,所以就找来自己加上了,再一试,OK,可以登录了,分享给大家!

1、导入Apache FtpServer依赖jar包
commons-net-ftp-2.0.jar
ftpserver-core-1.0.6.jar
log4j-1.2.14.jar
mina-core-2.0.4.jar
slf4j-api-1.5.2.jar
slf4j-log4j12-1.5.2.jar


2、Android启动FtpServer示例代码
package com.orgcent.ftp;

import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.listener.ListenerFactory;

import android.app.Activity;
import android.os.Bundle;

public class FtpServerActivity extends Activity {

    static { //由于Android系统版本原因,有些对ipv6支持存在bug,相关异常看文章底部介绍
        System.setProperty("java.net.preferIPv6Addresses", "false");
    }
    
    private FtpServer mFtpServer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        startFtpServer();
    }

    private void startFtpServer() {
        FtpServerFactory serverFactory = new FtpServerFactory();

        ListenerFactory factory = new ListenerFactory();

//这段很重要,是增加用户配置文件的,网上其它的文章里都没写这段,所以根本登录不上,加上这段就可以登录上了
PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
		File files=new File("/mnt/sdcard/users.properties");
		userManagerFactory.setFile(files);
        serverFactory.setUserManager(userManagerFactory.createUserManager());
        // set the port of the listener
        int port = 2221;
        factory.setPort(port);

        // replace the default listener
        serverFactory.addListener("default", factory.createListener());

        // start the server
        FtpServer server = serverFactory.createServer();
        this.mFtpServer = server;
        try {
            server.start();
        } catch (FtpException e) {
            e.printStackTrace();
        }

    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        
        if(null != mFtpServer) {
            mFtpServer.stop();
            mFtpServer = null;
        }
    }
}


3.users.properties配置文件内容,将该文件保存到/mnt/sdcard目录下
#开启admin帐户
# Password is "admin"
ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
#ftp共享目录
ftpserver.user.admin.homedirectory=/mnt/sdcard
#是否启用
ftpserver.user.admin.enableflag=true
#写权限
ftpserver.user.admin.writepermission=true
ftpserver.user.admin.maxloginnumber=0
ftpserver.user.admin.maxloginperip=0
ftpserver.user.admin.idletime=0
ftpserver.user.admin.uploadrate=0
ftpserver.user.admin.downloadrate=0

#开启anonymous帐号,不用密码,直接能登录
ftpserver.user.anonymous.userpassword=
ftpserver.user.anonymous.homedirectory=/mnt/sdcard
ftpserver.user.anonymous.enableflag=true
ftpserver.user.anonymous.writepermission=false
ftpserver.user.anonymous.maxloginnumber=20
ftpserver.user.anonymous.maxloginperip=2
ftpserver.user.anonymous.idletime=300
ftpserver.user.anonymous.uploadrate=4800
ftpserver.user.anonymous.downloadrate=4800


Demo下载地址:http://code.google.com/p/android-custom-view/downloads/list
分享到:
评论

相关推荐

    QT5.0实现FTP服务器

    在QT5.0中实现FTP服务器,可以让我们自定义一个能够处理文件上传和下载的服务,这对于开发文件管理或共享应用非常有用。 首先,我们需要理解FTP工作原理。FTP基于TCP/IP协议,通过建立两个连接来完成文件传输:控制...

    c++实现Ftp服务器

    描述:实现FTP服务器编程需要使用Visual C++或VS,添加ws2_32.lib库文件,并编写相应的代码来实现FTP服务器的功能。 标签:C++ FTP 部分内容: 在实现FTP服务器之前,需要添加ws2_32.lib库文件到工程中。在VC6.0...

    java实现FTP服务器

    在探讨如何使用Java实现FTP(File Transfer Protocol)服务器之前,我们首先需要理解FTP的基本概念及其工作原理。FTP是一种用于在网络上进行文件传输的标准协议,它支持上传(Upload)和下载(Download)功能,是...

    Android使用ftp方式实现文件上传和下载

    Android 使用 FTP 方式实现文件上传和下载 Android 使用 FTP 方式实现文件上传和下载是移动应用开发中的一项重要功能,特别是在 OTA 在线升级项目中,文件上传和下载是一个关键步骤。下面就 Android 使用 FTP 方式...

    Android Studio实现FTP文件上传

    在Android开发中,有时我们需要将...通过这个例子,开发者可以在Android应用中实现与FTP服务器的交互,上传应用内文件到远程服务器,为用户提供更多功能。同时,使用IIS作为FTP服务器,可以方便地进行本地测试和调试。

    安卓Android源码——Android版FTP服务器 SwiFTP源代码.zip

    在Android平台上实现FTP服务器功能,SwiFTP是一个开源的解决方案。这个项目允许用户在他们的Android设备上运行一个FTP服务器,从而可以远程访问设备上的文件。本文将深入探讨SwiFTP的源代码,解析其核心原理,并介绍...

    C语言实现FTP服务器

    在Linux系统中,使用C语言实现FTP服务器是一项技术性较强的任务,它涉及到网络编程、进程管理、文件操作等多个领域的知识。 首先,要理解FTP协议的基本工作原理。FTP基于TCP/IP协议族,通过客户端与服务器之间的...

    Delphi 实现FTP服务器与客户端源码

    本篇文章将深入探讨使用Delphi7开发FTP服务器和客户端的源码实现,以及相关的技术要点。 Delphi是一款由Embarcadero Technologies开发的集成开发环境(IDE),它基于Pascal编程语言,以其高效的编译器和丰富的组件...

    Qt实现的FTP服务器

    在"Qt实现的FTP服务器"项目中,开发者可能使用了Qt的网络模块来处理FTP协议的通信。Qt的QNetworkAccessManager类负责网络请求,而QNetworkReply和QTcpSocket等类则用于接收和发送数据。FTP协议涉及多个命令,如USER...

    c#实现FTP服务器

    c#实现FTP服务器, 功能 ①、按标准FTP协议登录FTP服务器,进行身份验证; ②、显示远程目录、文件列表,进行目录切换; ③、目录、文件列表的排序显示(文件名、时间、类型); ④、能上传文件、下载、删除文件...

    Android简洁版FTP服务器

    在Android平台上实现FTP服务器,可以让设备成为其他设备访问和管理文件的中心,这对于开发者调试、远程备份或者共享数据非常有用。本项目是在开源FTP服务器项目的基础上进行了优化和bug修复,特别是针对中文文件名...

    android 通过ftp协议访问服务器上的目录,通过listview 展示

    本项目“android 通过ftp协议访问服务器上的目录,通过listview 展示”就是实现了这样一个功能,允许用户浏览服务器上的目录并展示在ListView中。下面我们将详细讲解这个过程中的关键知识点。 1. FTP协议:FTP是...

    FTP服务器与客户端设计与实现

    在这个主题中,我们将深入探讨FTP服务器与客户端的设计与实现,包括文件操作、用户权限管理等关键概念。 一、FTP服务器基础 FTP服务器是提供文件传输服务的软件,它接收客户端的连接请求,处理文件的上传、下载以及...

    安卓Android源码——Android版FTP服务器 SwiFTP源代码.7z

    SwiFTP是由开源社区开发的一款Android上的FTP服务器应用,它实现了基本的FTP服务功能,包括用户登录验证、文件目录浏览、文件上传和下载等。其源代码结构清晰,适合开发者学习和二次开发。 三、SwiFTP关键组件 1. *...

    Linux搭建FTP服务器实现匿名上传.doc

    Linux 搭建 FTP 服务器实现匿名上传 ...搭建 FTP 服务器实现匿名上传的功能需要安装 vsftpd 服务器包、创建供匿名用户下载的目录、配置 vsftpd 服务器使其允许匿名用户上传文件,最后重启 vsftpd 服务器以使配置生效。

    使用 C# 创建一个 FTP 服务器

    在本文中,我们将深入探讨如何使用C#编程语言创建一个FTP(文件传输协议)服务器。FTP服务器是用于在客户端和服务器之间传输文件的核心组件。在C#中实现FTP服务器涉及理解网络编程、FTP协议规范以及如何处理不同类型...

    vc实现FTP服务器

    在本文中,我们将探讨如何使用VC++(Visual C++)来实现一个支持多并发的FTP服务器。 首先,理解FTP服务器的核心概念至关重要。FTP服务器通过监听特定端口(默认为21)来接收客户端的连接请求,然后进行身份验证、...

    实现FTP服务器文件传输课程设计

    实现FTP服务器可以使用各种编程语言,如C、C++、Java或Python等。你需要理解网络编程的基本概念,如套接字编程、多线程(或多进程)处理并发请求以及文件I/O操作。 6. 代码实现关键点: - 建立监听套接字,等待...

    java语言实现ftp服务器.rar_ftp_ftp 服务器_ftp 服务器实现_java ftp 服务器_服务器

    由于FTP协议允许同时处理多个客户端连接,因此Java实现的FTP服务器需要使用多线程技术。每个客户端连接都会启动一个新线程,确保服务器可以同时处理多个并发请求,提高服务效率。线程间的数据同步和通信也需要合理...

Global site tag (gtag.js) - Google Analytics