Android打开FTP服务端。

这个功能还是很实用的,可以方便手机和电脑之间传输文件。

这个功能其实也很容易,导入几个包,加几个权限,然后几行代码就搞定了。

一.导入几个包:

1.ftpserver-core-1.0.6.jar

2.log4j-1.2.14.jar

3.mina-core-2.0.4.jar

4.slf4j-api-1.5.2.jar

5.slf4j-log4j12-1.5.2.jar

6.commons-net-3.0.1.jar

二.加几个权限:

1.<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />(从存储卡上读取相关配置)

2.<uses-permission android:name="android.permission.INTERNET" />(没有这个绑定端口的时候会失败的)

三.几行代码:

/** Created by yy on 2016/11/3.*/
public class FtpServerManager {private static final String TAG = "FileUtil";private static FtpServerManager instance = new FtpServerManager();private FtpServerManager() {}//构造函数私有化防止创建实例public static FtpServerManager getInstance() {return instance;}private static FtpServer mFtpServer;private static int port = 2222;// 端口号private static String ftpConfigDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ftpConfig/";private static FtpServerFactory serverFactory;public void initFTPServer() {System.setProperty("java.net.preferIPv4Stack", "true");serverFactory = new FtpServerFactory();ListenerFactory factory = new ListenerFactory();PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();String[] str = {"mkdir", ftpConfigDir};try {Process ps = Runtime.getRuntime().exec(str);try {ps.waitFor();} catch (InterruptedException e) {e.printStackTrace();}} catch (IOException e) {e.printStackTrace();}String filename = ftpConfigDir + "users.properties";File files = new File(filename);userManagerFactory.setFile(files);serverFactory.setUserManager(userManagerFactory.createUserManager());factory.setPort(port);serverFactory.addListener("default", factory.createListener());FtpServer server = serverFactory.createServer();mFtpServer = server;}public void startFTPService() {
//        Log.i(TAG, "通知: 开启FTPService");if (mFtpServer == null) {
//            Log.i(TAG, "通知: mFtpServer为null");mFtpServer = serverFactory.createServer();try {mFtpServer.start();} catch (FtpException e) {e.printStackTrace();}} else {
//            Log.i(TAG, "通知: mFtpServer不为null");if (mFtpServer.isStopped() == true) {try {mFtpServer.start();
//                    Log.i(TAG, "通知: 开启FTPService===2");} catch (FtpException e) {e.printStackTrace();}}}
//        Log.i(TAG, "通知: mFtpServer.isStopped() " + mFtpServer.isStopped());}public void restartFTPService() {Log.i(TAG, "通知: 重启FTPService");if (mFtpServer != null) {if (mFtpServer.isStopped() == false) {mFtpServer.resume();}}}public void stopFTPService() {Log.i(TAG, "通知: 关闭FTPService");if (mFtpServer != null) {Log.i(TAG, "通知: mFtpServer不为null");if (mFtpServer.isStopped() == false) {mFtpServer.stop();Log.i(TAG, "mFtpServer.isStopped():" + mFtpServer.isStopped());}mFtpServer = null;}Log.i(TAG, "通知: 关闭成功");}
}

四.使用说明:

1.在/sdcard/ftpConfig目录下放入users.properties文件,内容如下:

# Password is "admin"
ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
ftpserver.user.admin.homedirectory=/sdcard/
ftpserver.user.admin.enableflag=true
ftpserver.user.admin.writepermission=true
ftpserver.user.admin.maxloginnumber=20
ftpserver.user.admin.maxloginperip=5
ftpserver.user.admin.idletime=300
ftpserver.user.admin.uploadrate=4800000
ftpserver.user.admin.downloadrate=4800000

2.调用时先初始化,再开始,最后停止。

3.长时间开始会导致FTP服务有时不好用,可能跟android资源回收导致,所以每一段时间可以选择restart一下

恩,就到这里,随后写一个demo上传上来方便自己使用,GitHub地址如下:
https://github.com/yy4myself/FTPService.git
后面还会继续维护,要改的地方还很多

[Android]Android FTP Server相关推荐

  1. Android FTP Server 1

    下面介绍几种Android 版本的FTP Server : virtualdataline Virtual Data Line is a software  that you can   manage ...

  2. Android中FTP服务器、客户端搭建以及SwiFTP、ftp4j介绍

    本文主要内容: 1.FTP服务端部署---- 基于Android中SwiFTP开源软件介绍: 2.FTP客户端部署 --- 基于ftp4j开源jar包的客户端开发 : 3.使用步骤 --- 如何测试我 ...

  3. Android 使用FTP实现上传、下载等功能

    一.前言 最近在项目中遇到使用到FTP上传和下载资源,特此记录一下实现的方式.Android实现FTP的功能主要用到了Apache的Commons Net库,将Commons Net的jar包下载引入 ...

  4. ftp 断点续传 Android,Android使用FTP实现断点续传

    Android使用FTP实现断点续传 断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传 ...

  5. Android 通过FTP方式下载服务器文件

    Android中大多数情况都是通过http请求后台数据,这种方式会有很多网络请求框架,现在有个需求是通过请求FTP服务器下载文件,那些经常用到的网络框架都用不了了,接下来我就来实现Android访问F ...

  6. Android 访问FTP 服务器,实现文件的下载

    Android 访问FTP服务器,实现文件的下载,一个简单的Demo,下面是一些简单的代码片.如果对FTP不太了解的话,最好先去简单的了解哈 在测试的过程中,总是与服务器的连接容易断开,要考虑下与服务 ...

  7. Android设备FTP服务器搭建

    Android设备FTP服务器搭建 目 录 1 前言- 1.1设计背景- 1.2搭建方案简述- 2 搭建服务器流程- 2.1创建新项目- 2.2添加相应jar包- 2.3添加相应依赖- 2.4获取设备 ...

  8. SERV-U FTP SERVER和SERV-U MFT SERVER的区别

    SERV-U FTP SERVER和SERV-U MFT SERVER的区别 SERV-U FTP SERVER SERV-U MFT SERVER MAXIMUM USAGE Domains 3 u ...

  9. 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)

    Android 的窗口管理系统 (View, Canvas, WindowManager) 在图解Android - Zygote 和 System Server 启动分析一 文里,我们已经知道And ...

  10. JAVA实现ftp服务端_用 java 实现FTP SERVER(附源码)

    前面用 PYTHON 实现了一个 ftp server(参考这里) ,有朋友问有没有java版本的,其实说白了,ftp 也就是 tcp/ip 协议的一个应用而已,而tcp/ip 基本都是通过socke ...

最新文章

  1. SLAM前端 ---------特征提取之ORB(ORB与SIFT与SURF)
  2. 《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理
  3. 软件测试java三角形形状判定,软件测试技术基础实验——Junit 安装与 三角形问题的测试...
  4. Shell 条件表达式的正则匹配
  5. c语言的编程特点,c语言编程是什么?C语言编程的特点和应用
  6. python 正则处理经纬度度分秒转换
  7. 如何解决back order中,confirmed qty can't be change的问题
  8. 程序员是如何从小白做到年薪百万
  9. 那个“天使”阿桑奇又回来了
  10. 重卡自动驾驶进入“正规战”
  11. 推箱子一关简易劣质版
  12. android配置阿里云仓库
  13. Mac安装Meld,并使用Meld作为git merge tool的工具
  14. Java后端程序员3年工作经验总结(一)
  15. 解决Java连接达梦数据库报For input string: “8“的问题
  16. 【信息系统项目管理师】信息系统主流开发方法之结构化方法、面向对象方法和原型法总结
  17. 我在赶集网的两个月 (完整版)
  18. 知乎这样的内容社区,如何做好 AI 架构搭建与应用?
  19. 大家都不要用paypal。 骗子公司。我今天见识了
  20. mysql ibata文件_重装系统后,怎么调用之前mysql的数据_mysql

热门文章

  1. 分享解决jar包冲突问题的方法:(看了这个你就能解决所有包冲突问题!)
  2. 计算机网络——IPv4地址概述
  3. 电脑安装完软件打不开怎么办
  4. 在线安装提示失败显示系统镜像MD5不正确怎么办
  5. Lounge Lizard EP-4 for Mac(电钢琴插件)v4.2.5破解版
  6. 电脑钢琴模拟器(初学WINDOW库)
  7. 怎么样添加桌面我的计算机,怎么样把我的电脑添加到桌面上
  8. 2022年煤气考试试题及答案
  9. 逐鹿战神--ios技术支持
  10. 微信小程序 表单控件【族谱聚微信小程序表单控件】