我这里是使用的apache的开发包,下面就是实现android手机作为FTP服务器必须的jar包,可以到官网上下载
也可以在CSDN上找一个,网上 这种资源还是比较丰富的。 这是我使用的jar包-->>下载资源
commons-net-3.3-sources.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。下面是代码:
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/
ftp://u:m@IP:2121/