研究了半天,学习了sun.net.ftp包中的FtpClient类,用来实现Ftp功能。
首先搭好Ftp的测试环境
添加windows组件,安装IIS中的FTP服务。
在运行中输入inetmgr,对默认ftp站点点右键->属性进行配置,
配置好了之后在运行中输入ftp进行链接测试
现在ftp的测试环境已经搭建成功,接下来用java编程实现ftp的访问
简单介绍一下sun.net.ftp中的FtpClient类
该类中有:
openServer方法:用于链接ftp,类似于在ftp(dos格式下)中输入open命令。
login方法:用于输入用户及密码,类似于在ftp(dos格式下)中输入user命令。
sendServer方法:用于向ftp服务器发送各种指令。
readServerResponse方法:与sendServer方法合用,用于使服务器返回消息。
getResponseString方法:获取服务器返回的消息。
closeServer方法:中断服务器链接,类似于在ftp(dos格式下)中输入quit命令。
下面是demo程序的效果
下面是程序源代码:
/*------------------display ftp demo class begin----------------*/
package com.android.Yao;
import java.applet.Applet;
import java.awt.*;
public class displayftpdemo extends Applet {
TextField tf = new TextField("",45);
Button button = new Button("Send");
Button button1 = new Button("Exit");
TextArea ta = new TextArea("",10,50);
ftpdemo b=new ftpdemo();
public void init()
{
add(ta);
add(tf);
add(button);
add(button1);
try
{
b.connectServer(b.gethostname(), b.getport(), b.getusername(),b.getuserpwd());
ta.append(b.ftpClient.getResponseString());
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean action(Event e,Object o)
{
if(e.target instanceof Button)
{
if(e.target == button)
{
try
{
ta.append(b.SendServer(b,tf.getText()+"\r\n"));
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
else if (e.target == button1)
{
try
{
b.closeServer();
ta.append(b.ftpClient.getResponseString());
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
return true;
}
}
/*------------------display ftp demo class end----------------*/
/*------------------ftpclient class begin ----------------*/
package com.android.Yao;
import sun.net.ftp.*;
public class ftpdemo {
String hostname = "192.168.0.195";
int portnum = 21;
String username = "anonymous";
String userpwd = "111";
FtpClient ftpClient = new FtpClient();
public String gethostname()
{
return hostname;
}
public int getport()
{
return portnum;
}
public String getusername()
{
return username;
}
public String getuserpwd()
{
return userpwd;
}
public boolean connectServer(String ip, int port, String user, String pwd)
throws Exception
{
boolean isSuccess = false;
try
{
ftpClient.openServer(ip, port);
ftpClient.login(user, pwd);
isSuccess = true;
}
catch (Exception ex)
{
throw new Exception("Connect ftp server error:" + ex.getMessage());
}
return isSuccess;
}
public boolean closeServer()
throws Exception
{
boolean isSuccess = false;
try
{
ftpClient.closeServer();
isSuccess = true;
}
catch(Exception ex)
{
throw new Exception("DisConnect ftp server error:"+ex.getMessage());
}
return isSuccess;
}
public String getFileList()
throws Exception
{
String FileName="no filelist";
this.connectServer(hostname, portnum, username, userpwd);
try
{
}
catch(Exception ex)
{
throw new Exception("Get FileList error:"+ex.getMessage());
}
this.closeServer();
return FileName;
}
public String SendServer(ftpdemo a,String cmd)
throws Exception
{
String result="error\n";
try
{
a.ftpClient.sendServer(cmd);
a.ftpClient.readServerResponse();
result = ftpClient.getResponseString();
}
catch(Exception ex)
{
throw new Exception("Get FileList error:"+ex.getMessage());
}
return result;
}
}
/*------------------ftpclient class end ----------------*/
今天一天的学习结束,明天研究研究各个ftp的指令,以及如何将其整合到Android手机中!