• 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
    "+
     59                     "ftpserver.user.admin.userpassword=bff4d7685c1475b68c016c478a728b6e
    "+
     60                     "ftpserver.user.admin.homedirectory=/mnt/sdcard
    "+
     61                     "ftpserver.user.admin.enableflag=true
    "+  
     62                     "ftpserver.user.admin.writepermission=true
    "+
     63                     "ftpserver.user.admin.maxloginnumber=250
    "+
     64                     "ftpserver.user.admin.maxloginperip=250
    "+
     65                     "ftpserver.user.admin.idletime=300
    "+
     66                     "ftpserver.user.admin.uploadrate=10000
    "+  
     67                     "ftpserver.user.admin.downloadrate=10000
    ";
     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
    "+
     3                     "ftpserver.user.admin.userpassword=bff4d7685c1475b68c016c478a728b6e
    "+
     4                     "ftpserver.user.admin.homedirectory=/mnt/sdcard
    "+
     5                     "ftpserver.user.admin.enableflag=true
    "+  
     6                     "ftpserver.user.admin.writepermission=true
    "+
     7                     "ftpserver.user.admin.maxloginnumber=250
    "+
     8                     "ftpserver.user.admin.maxloginperip=250
    "+
     9                     "ftpserver.user.admin.idletime=300
    "+
    10                     "ftpserver.user.admin.uploadrate=10000
    "+  
    11                     "ftpserver.user.admin.downloadrate=10000
    ";

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

    ⑤将配置文件生效

    ⑥对ftp服务设置监听端口

    ⑦创建ftpServer

    ⑧启动服务

    四、demo地址

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

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

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

  • 相关阅读:
    NET 连接池救生员(转载:M$)
    gitflow学习总结
    Apache Zookeeper
    ZZ: C++实现读取整行文本和每次只读入一个单词
    ZZ: C C++ string转char*
    memset
    prinf
    ZZ: C++ int转string from http://pppboy.blog.163.com/blog/static/302037962010378296766/
    XHTML下,JS浮动代码失效的问题 心境
    13个超酷的js显示时间效果 心境
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/4338672.html
Copyright © 2020-2023  润新知