一、为啥

在android设备跑ftp服务,在现场方便查看日志,目前就是这么用的。

二、前提:

从apache的官网下载依赖包:http://mina.apache.org/ftpserver-project/download_1.0.6.html

解压后如下:

在最右侧的jar包列表中,并不需要全部导入我们的工程,需要导入的包为:

记得把jar包添加到buildPath,同时在order and export选项选中上步添加的jar包

三、如何用:

 package com.example.zzk;

 import java.io.File;
import java.io.IOException; import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem; public class MainActivity extends Activity { public static String path = Environment.getExternalStorageDirectory()+File.separator+"FTP_TEST"+ File.separator;
public Context ctxt;
public String tag = "zzk";
public static FtpServer ftpServer; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); ctxt = getApplicationContext();
ftpServiceStart(ctxt);
} /**
*
* 启动ftp服务
*/
public static void ftpServiceStart(Context ctxt)
{
FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory factory = new ListenerFactory(); factory.setPort(12345); // set the port of the listener FIleUtils fu = new FIleUtils(ctxt);
try {
File file = new File(path);
if(!file.isDirectory())
{
file.mkdir();
}
fu.createFile(path+"ftpserver.properties");
String str = "" +
"ftpserver.user.admin.username=admin\n"+
"ftpserver.user.admin.userpassword=bff4d7685c1475b68c016c478a728b6e\n"+
"ftpserver.user.admin.homedirectory=/mnt/sdcard\n"+
"ftpserver.user.admin.enableflag=true\n"+
"ftpserver.user.admin.writepermission=true\n"+
"ftpserver.user.admin.maxloginnumber=250\n"+
"ftpserver.user.admin.maxloginperip=250\n"+
"ftpserver.user.admin.idletime=300\n"+
"ftpserver.user.admin.uploadrate=10000\n"+
"ftpserver.user.admin.downloadrate=10000\n"; fu.writeFile(str, path+"ftpserver.properties"); File files=new File(path+"ftpserver.properties"); PropertiesUserManagerFactory usermanagerfactory = new PropertiesUserManagerFactory();
usermanagerfactory.setFile(files);
serverFactory.setUserManager(usermanagerfactory.createUserManager()); } catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} serverFactory.addListener("default", factory.createListener()); // replace the default listener
if(ftpServer != null)
{
ftpServer.stop();
} FtpServer server = serverFactory.createServer();
ftpServer = server;
// start the server
try {
server.start();
} catch (FtpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }

四、总结

1、大致过程就是:

①创建ftp服务器工厂

②创建ftp监听工厂

③设置监听端口(这里设置的是12345)

④创建ftp配置文件

 String str = "" +
"ftpserver.user.admin.username=admin\n"+
"ftpserver.user.admin.userpassword=bff4d7685c1475b68c016c478a728b6e\n"+
"ftpserver.user.admin.homedirectory=/mnt/sdcard\n"+
"ftpserver.user.admin.enableflag=true\n"+
"ftpserver.user.admin.writepermission=true\n"+
"ftpserver.user.admin.maxloginnumber=250\n"+
"ftpserver.user.admin.maxloginperip=250\n"+
"ftpserver.user.admin.idletime=300\n"+
"ftpserver.user.admin.uploadrate=10000\n"+
"ftpserver.user.admin.downloadrate=10000\n";

这里的配置为:用户名为admin 密码为经过md5加密的一串字符串(你可以自行设置,百度md5加密,自己找去吧),还有设置登录个、ip、上下行速度等

⑤将配置文件生效

⑥对ftp服务设置监听端口

⑦创建ftpServer

⑧启动服务

四、demo地址

http://pan.baidu.com/s/1qWA04Ja

五、如何判断ftp服务是否启动成功

一个很方便的工具:chrome,直接输入ftp://+你的ftp地址+:+端口 (举例:ftp://192.168.1.2:12345)

26、android上跑apache的ftp服务的更多相关文章

  1. Android上传文件之FTP

    android客户端实现FTP文件(包括图片)上传应该没什么难度.写下来就了为了记录一下,望能帮到新手. 需要用到 commons-net-3.0.1.jar,后面附上jar包. 直接上代码: /** ...

  2. Android 上传文件到 FTP 服务器

    实现背景 近期接触到一个需求,就是将文件从Android系统上传到FTP服务器,虽然之前接触过FTP服务器,了解基本的使用流程,但是将此流程从使用习惯转化为代码实现还是有一定难度的.但是基本的流程还是 ...

  3. Android中使用Apache common ftp进行下载文件

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/birdsaction/article/details/36379201 在Android使用ftp下 ...

  4. react native android 上传文件,Nodejs服务端获取上传的文件

    React Native端 使用react-native-image-picker 做出选择图片的操作,选择完成后,直接将图片Post至服务器,保存在服务器的某个地方(保存图片的路径需要公开显示),并 ...

  5. Create & use FTP service on Ubuntu(在Ubuntu上搭建并使用FTP服务)

    Check if the FTP service has been installed.(检查是否已安装)   Vsftpd --version  If it has not install,Pres ...

  6. 在android上跑 keras 或 tensorflow 模型

    https://groups.google.com/forum/#!topic/keras-users/Yob7mIDmTFs http://talc1.loria.fr/users/cerisara ...

  7. C# WebClient进行FTP服务上传文件和下载文件

    定义WebClient使用的操作类: 操作类名称WebUpDown WebClient上传文件至Ftp服务: //// <summary> /// WebClient上传文件至Ftp服务 ...

  8. Centos7上安装Apache

    Apache HTTP服务器是世界上最流行的Web服务器. 它是一款免费的开源和跨平台的HTTP服务器,提供强大的功能,可以通过各种模块进行扩展. 以下说明介绍如何在CentOS 7机器上安装和管理A ...

  9. 如何在CentOS 7上安装Apache

    使用systemctl管理Apache服务 我们可以像任何其他系统单元一样管理Apache服务. 要停止Apache服务,请运行: sudo systemctl stop httpd 要再次启动,请键 ...

随机推荐

  1. 提升Java代码质量(二)

    Item5:消除过期对象的引用 JVM为我们实现了GC(垃圾回收)的功能,让我们从手工管理内存中解放了出来,这固然很好,但并不意味着我们就再也不需要去考虑内存管理的事情了;我们用简单的栈实现的例子来解 ...

  2. JavaScript笔记5-事件

    一.概述: 事件是可以被JavaScript侦测到的行为.网页中的每个元素都可以产生某些可以触发JavaScript函数的事件.相当于让标签在满足某种条件的时候,调用指定的方法. 二.常用事件 1:o ...

  3. redis 大批量数据插入导致MISCONF Redis is configured to save RDB snapshots的解决

    PS:之前写过一遍,那个方法没有彻底解决,现找到真正的解决方法 环境:redis 3.2.100 windows版(注意!!!这是关键),win10,redis客户端spring boot 2.0.7 ...

  4. 新项目升级到JFinal3.5之后的改变-着重体验自动依赖注入

    最近,JFinal3.5发布,喜大普奔,我也应JBolt用户的需求,将JBolt进行了升级,实现可配置自动注入开启,支持JFinal3.5的项目生成.具体可以看:JBolt升级日志 这等工作做完后,我 ...

  5. python 之 re 模块

    re模块下的常用方法 1.findall:返回所有满足匹配条件的结果,放在列表里. import re # 查找数字 result = re.findall('\d+','nizhidao 123 w ...

  6. A winner is a dreamer who never gives up

    A winner is a dreamer who never gives up. 成功者是坚持梦想不放弃的人.(Nelson Mandela)

  7. Uva 10635 Prince and Princess (LCS变形LIS)

    直接LCS是时间复杂度是O(p*q)的,但是序列元素各不相同,只要把其中一个序列映射成有序的, 另外一个序列再做相同的映射,没有的直接删掉,就变成了求另一个序列LIS. #include<bit ...

  8. UVA 12898 - And Or 与和或 (思路题)

    思路就是有零一变化的位Or以后一定是1,And以后一定是0:那么如果b的二进制更长那么就把包含a的部分全部置为1或0,如果一样长那么就把不同的部分置为1或0. 今天被这题坑的地方:1默认是int,如果 ...

  9. ansible 通过堡垒机/跳板机 访问目标机器需求实战(ssh agent forward)

    一. 需求背景: 在我们使用ansible的过程中经常会遇到这样的情况,我们要管理的机器都在内网中,这些内网机器的登录都是通过跳板机或者堡垒机登录.我们的ansible机器不能直接管理到这些后端的机器 ...

  10. Spark集锦

    1 Spark官网  http://spark.apache.org/ 2 Spark书籍 http://down.51cto.com/tag-spark%E4%B9%A6%E7%B1%8D.html