26、android上跑apache的ftp服务

一、为啥

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

 

二、前提:

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

解压后如下:
技术分享

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

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

 

三、如何用:

技术分享
  1 package com.example.zzk;
  2 
  3 import java.io.File;
  4 import java.io.IOException;
  5 
  6 import org.apache.ftpserver.FtpServer;
  7 import org.apache.ftpserver.FtpServerFactory;
  8 import org.apache.ftpserver.ftplet.FtpException;
  9 import org.apache.ftpserver.listener.ListenerFactory;
 10 import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
 11 
 12 
 13 import android.app.Activity;
 14 import android.content.Context;
 15 import android.os.Bundle;
 16 import android.os.Environment;
 17 import android.view.Menu;
 18 import android.view.MenuItem;
 19 
 20 public class MainActivity extends Activity {
 21 
 22     public static String path = Environment.getExternalStorageDirectory()+File.separator+"FTP_TEST"+ File.separator;
 23     public Context ctxt;
 24     public String tag = "zzk";
 25     public static FtpServer ftpServer;
 26     
 27     @Override
 28     protected void onCreate(Bundle savedInstanceState) {
 29         super.onCreate(savedInstanceState);
 30         setContentView(R.layout.activity_main);
 31         
 32         ctxt = getApplicationContext();
 33         ftpServiceStart(ctxt);
 34     } 
 35     
 36     
 37      /**
 38       * 
 39       * 启动ftp服务
 40       */
 41      public static void ftpServiceStart(Context ctxt)
 42      {
 43          FtpServerFactory serverFactory = new FtpServerFactory();
 44          
 45          ListenerFactory factory = new ListenerFactory();
 46          
 47          factory.setPort(12345);        // set the port of the listener
 48         
 49         FIleUtils fu = new FIleUtils(ctxt);
 50         try {
 51                 File file = new File(path);
 52                 if(!file.isDirectory())
 53                 {
 54                     file.mkdir();
 55                 }
 56             fu.createFile(path+"ftpserver.properties");
 57             String str = "" +
 58                     "ftpserver.user.admin.username=admin\n"+
 59                     "ftpserver.user.admin.userpassword=bff4d7685c1475b68c016c478a728b6e\n"+
 60                     "ftpserver.user.admin.homedirectory=/mnt/sdcard\n"+
 61                     "ftpserver.user.admin.enableflag=true\n"+  
 62                     "ftpserver.user.admin.writepermission=true\n"+
 63                     "ftpserver.user.admin.maxloginnumber=250\n"+
 64                     "ftpserver.user.admin.maxloginperip=250\n"+
 65                     "ftpserver.user.admin.idletime=300\n"+
 66                     "ftpserver.user.admin.uploadrate=10000\n"+  
 67                     "ftpserver.user.admin.downloadrate=10000\n";
 68                                 
 69             fu.writeFile(str, path+"ftpserver.properties");
 70             
 71             File files=new File(path+"ftpserver.properties");
 72             
 73             PropertiesUserManagerFactory usermanagerfactory = new PropertiesUserManagerFactory();
 74             usermanagerfactory.setFile(files);
 75             serverFactory.setUserManager(usermanagerfactory.createUserManager());
 76             
 77         } catch (IOException e1) {
 78             // TODO Auto-generated catch block
 79             e1.printStackTrace();
 80         }
 81         
 82          
 83          
 84          
 85          
 86          serverFactory.addListener("default", factory.createListener());        // replace the default listener
 87          if(ftpServer != null)
 88          {
 89              ftpServer.stop();
 90          }
 91          
 92          FtpServer server = serverFactory.createServer();
 93          ftpServer = server;
 94          // start the server
 95          try {
 96             server.start();
 97         } catch (FtpException e) {
 98             // TODO Auto-generated catch block
 99             e.printStackTrace();
100         } 
101         
102      }
103 
104     
105 }
View Code

 

四、总结

1、大致过程就是:

①创建ftp服务器工厂

 

②创建ftp监听工厂

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

④创建ftp配置文件

 1 String str = "" +
 2                     "ftpserver.user.admin.username=admin\n"+
 3                     "ftpserver.user.admin.userpassword=bff4d7685c1475b68c016c478a728b6e\n"+
 4                     "ftpserver.user.admin.homedirectory=/mnt/sdcard\n"+
 5                     "ftpserver.user.admin.enableflag=true\n"+  
 6                     "ftpserver.user.admin.writepermission=true\n"+
 7                     "ftpserver.user.admin.maxloginnumber=250\n"+
 8                     "ftpserver.user.admin.maxloginperip=250\n"+
 9                     "ftpserver.user.admin.idletime=300\n"+
10                     "ftpserver.user.admin.uploadrate=10000\n"+  
11                     "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)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。