分享

一步一步android(6):关于FtpClient类的学习

 lzChen07 2010-11-01

研究了半天,学习了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手机中!


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约