现在的位置: 首页 > 综合 > 正文

Android把手机作为FTP服务器,在PC端管理手机文件的简单实现

2017年11月15日 ⁄ 综合 ⁄ 共 2856字 ⁄ 字号 评论关闭
我这里是使用的apache的开发包,下面就是实现android手机作为FTP服务器必须的jar包,可以到官网上下载
也可以在CSDN上找一个,网上 这种资源还是比较丰富的。 这是我使用的jar包-->>下载资源
commons-net-3.3-sources.jar
commons-net-3.3.jar
ftpserver-core-1.0.6.jar
log4j-1.2.14.jar
mina-core-2.0.4.jar
slf4j-api-1.5.2.jar
slf4j-log4j12-1.5.2.jar
如果还有人不会使用第三方开发包的话-->>(先把下载的包复制到lib/libs文件夹下,然后选中右键--add to Build path)
还有很重要的一点就是:ftp的实现有一个先决条件 就是手机和电脑要使用相同的Wifi。下面是代码:

package com.ftp;
import java.util.ArrayList;
import java.util.List;
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.impl.BaseUser;
import org.apache.ftpserver.usermanager.impl.WritePermission;
import android.app.Activity;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.Button;
public class MainAcitivity extends Activity {
 private Button button;
 private FtpServer ftpServer;
 private final static int PORT = 2121;
 private final static String USERNAME = "u";
 private final static String PASSWORD = "m";
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  
  try {
   //用于创建server
   FtpServerFactory serverFactory = new FtpServerFactory();
   
   //需要配置一些信息,如设置监听的端口,设置IP过滤器....
   ListenerFactory listenerFactory = new ListenerFactory();
   
   //设置端口
   listenerFactory.setPort(PORT);
   
   //如果五分钟还没有任何操作,则关闭连接
   listenerFactory.setIdleTimeout(5*60*1000);
   
   //设置匿名用户 但是对于文件权限是只读
   
/*   BaseUser user = new BaseUser();
   user.setName("anonymous");
   user.setHomeDirectory("/mnt");*/
   
   //设置用户名密码用户
   BaseUser user = new BaseUser();
   user.setName(USERNAME);
   user.setPassword(PASSWORD);
   
   //设置PC端登陆后可访问的根目录
   user.setHomeDirectory("/mnt");
   
   //授予该用户写的权限
   List<Authority> authorities = new ArrayList<Authority>();
   authorities.add(new WritePermission());
   user.setAuthorities(authorities);
   serverFactory.getUserManager().save(user);
   //创建并添加监听
   serverFactory.addListener("default", listenerFactory.createListener());
   
   //创建服务
   ftpServer = serverFactory.createServer();
   
   //开启服务
   ftpServer.start();
   
   //获取手机的IP地址
   WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
   int ip = wifiManager.getConnectionInfo().getIpAddress();
   String realIp = intToIp(ip);
   
   button = (Button) findViewById(R.id.button1);
   
   //这就是最终在PC端访问手机文件要输入的内容
   button.setText("ftp://" + USERNAME + ":" + PASSWORD + "@" + realIp+ ":" + PORT + "/");
   
  } catch (FtpException e) {
   e.printStackTrace();
  }
 }
    //转换IP地址
    public String intToIp(int i) {    
        return (i & 0xFF ) + "." + ((i >> 8 ) & 0xFF) + "." + ((i >> 16 ) & 0xFF) + "." + ( i >> 24 & 0xFF) ;
   }

    @Override
    protected void onDestroy() {
        super.onDestroy();    
        if(null != ftpServer) {
	    //关闭服务
            ftpServer.stop();
            ftpServer = null;
        }
    }
}
假设用户名和密码是 u 和 m
则在PC端输入的访问地址就是:
ftp://u:m@IP:2121/



抱歉!评论已关闭.