我这里是使用的apache的开发包,下面就是实现android手机作为FTP服务器必须的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.belle.lp;
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.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 MainActivity 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) {
// TODO Auto-generated method stub
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(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 (Exception e) {
e.printStackTrace();
}
}
private 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/