[Android]Android FTP Server
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相关推荐
- Android FTP Server 1
下面介绍几种Android 版本的FTP Server : virtualdataline Virtual Data Line is a software that you can manage ...
- Android中FTP服务器、客户端搭建以及SwiFTP、ftp4j介绍
本文主要内容: 1.FTP服务端部署---- 基于Android中SwiFTP开源软件介绍: 2.FTP客户端部署 --- 基于ftp4j开源jar包的客户端开发 : 3.使用步骤 --- 如何测试我 ...
- Android 使用FTP实现上传、下载等功能
一.前言 最近在项目中遇到使用到FTP上传和下载资源,特此记录一下实现的方式.Android实现FTP的功能主要用到了Apache的Commons Net库,将Commons Net的jar包下载引入 ...
- ftp 断点续传 Android,Android使用FTP实现断点续传
Android使用FTP实现断点续传 断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传 ...
- Android 通过FTP方式下载服务器文件
Android中大多数情况都是通过http请求后台数据,这种方式会有很多网络请求框架,现在有个需求是通过请求FTP服务器下载文件,那些经常用到的网络框架都用不了了,接下来我就来实现Android访问F ...
- Android 访问FTP 服务器,实现文件的下载
Android 访问FTP服务器,实现文件的下载,一个简单的Demo,下面是一些简单的代码片.如果对FTP不太了解的话,最好先去简单的了解哈 在测试的过程中,总是与服务器的连接容易断开,要考虑下与服务 ...
- Android设备FTP服务器搭建
Android设备FTP服务器搭建 目 录 1 前言- 1.1设计背景- 1.2搭建方案简述- 2 搭建服务器流程- 2.1创建新项目- 2.2添加相应jar包- 2.3添加相应依赖- 2.4获取设备 ...
- 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 ...
- 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)
Android 的窗口管理系统 (View, Canvas, WindowManager) 在图解Android - Zygote 和 System Server 启动分析一 文里,我们已经知道And ...
- JAVA实现ftp服务端_用 java 实现FTP SERVER(附源码)
前面用 PYTHON 实现了一个 ftp server(参考这里) ,有朋友问有没有java版本的,其实说白了,ftp 也就是 tcp/ip 协议的一个应用而已,而tcp/ip 基本都是通过socke ...
最新文章
- SLAM前端 ---------特征提取之ORB(ORB与SIFT与SURF)
- 《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理
- 软件测试java三角形形状判定,软件测试技术基础实验——Junit 安装与 三角形问题的测试...
- Shell 条件表达式的正则匹配
- c语言的编程特点,c语言编程是什么?C语言编程的特点和应用
- python 正则处理经纬度度分秒转换
- 如何解决back order中,confirmed qty can't be change的问题
- 程序员是如何从小白做到年薪百万
- 那个“天使”阿桑奇又回来了
- 重卡自动驾驶进入“正规战”
- 推箱子一关简易劣质版
- android配置阿里云仓库
- Mac安装Meld,并使用Meld作为git merge tool的工具
- Java后端程序员3年工作经验总结(一)
- 解决Java连接达梦数据库报For input string: “8“的问题
- 【信息系统项目管理师】信息系统主流开发方法之结构化方法、面向对象方法和原型法总结
- 我在赶集网的两个月 (完整版)
- 知乎这样的内容社区,如何做好 AI 架构搭建与应用?
- 大家都不要用paypal。 骗子公司。我今天见识了
- mysql ibata文件_重装系统后,怎么调用之前mysql的数据_mysql