不是一两句话能说完啊。你要会其它语言的,用java也就一样了。
无非是建立Socket对象,BufferedReader,InputStream,OutputStream,
写入ftp命令吧。

解决方案 »

  1.   

    主要问题是,服务器端只是开了ftp服务,我用socket连接它可以吗?
    端口直接用21吗?
    那如何下载服务器上的文件呢
      

  2.   

    就是用网络编程中传统的Socket与ServerSocket类的操作啊
      

  3.   

    这样行不行?
    <<
    public class FTP {
        public static void main(String[] args) {
            System.out.println("ftp");
        }
    }
    >>
      

  4.   

    xiaohaiz(城里的老土,两眼依然通红!) 
    这样行不行?
    <<
    public class FTP {
        public static void main(String[] args) {
            System.out.println("ftp");
        }
    }
    >>
    ---------
    幽默,呵呵.
      

  5.   

    package ftp;import sun.net.ftp.*;
    import sun.net.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import java.io.*;public class FtpApplet extends Applet
    {
    FtpClient aftp;
    DataOutputStream outputs ;
    TelnetInputStream ins;
    TelnetOutputStream outs;
    TextArea lsArea;
    Label    LblPrompt;
    Button   BtnConn;
    Button   BtnClose;
    TextField  TxtUID;
    TextField  TxtPWD;
    TextField  TxtHost;
    int ch;
    public String a="没有连接主机";
            String hostname="";
    public void init () {
    setBackground(Color.white);
    setLayout(new GridBagLayout());
    GridBagConstraints GBC = new GridBagConstraints();
    LblPrompt = new Label("没有连接主机");
    LblPrompt.setAlignment(Label.LEFT);BtnConn = new Button("连接");
    BtnClose = new Button("断开");
    BtnClose.enable(false);
    TxtUID = new TextField("",15);
    TxtPWD = new TextField("",15);
    TxtPWD.setEchoCharacter('*');
    TxtHost = new TextField("",20);
    Label LblUID = new Label("User ID:");
    Label LblPWD = new Label("PWD:");
    Label LblHost = new Label("Host:");lsArea = new TextArea(30,80);
    lsArea.setEditable(false);GBC.gridwidth= GridBagConstraints.REMAINDER;
    GBC.fill     = GridBagConstraints.HORIZONTAL;
    ((GridBagLayout)getLayout()).setConstraints(LblPrompt,GBC);
    add(LblPrompt);GBC.gridwidth=1;
    ((GridBagLayout)getLayout()).setConstraints(LblHost,GBC);
    add(LblHost);
    GBC.gridwidth=GridBagConstraints.REMAINDER;
    ((GridBagLayout)getLayout()).setConstraints(TxtHost,GBC);
    add(TxtHost);GBC.gridwidth=1;
    ((GridBagLayout)getLayout()).setConstraints(LblUID,GBC);
    add(LblUID);
    GBC.gridwidth=1;
    ((GridBagLayout)getLayout()).setConstraints(TxtUID,GBC);
    add(TxtUID);GBC.gridwidth=1;
    ((GridBagLayout)getLayout()).setConstraints(LblPWD,GBC);
    add(LblPWD);
    GBC.gridwidth=1;
    ((GridBagLayout)getLayout()).setConstraints(TxtPWD,GBC);
    add(TxtPWD);GBC.gridwidth=1;
    GBC.weightx=2;
    ((GridBagLayout)getLayout()).setConstraints(BtnConn,GBC);
    add(BtnConn);
    GBC.gridwidth=GridBagConstraints.REMAINDER;((GridBagLayout)getLayout()).setConstraints(BtnClose,GBC);
    add(BtnClose);GBC.gridwidth=GridBagConstraints.REMAINDER;
    GBC.fill     = GridBagConstraints.HORIZONTAL;
    ((GridBagLayout)getLayout()).setConstraints(lsArea,GBC);
    add(lsArea);
            }public boolean connect(String hostname, String uid,String pwd)
    {
                    this.hostname = hostname;
    LblPrompt.setText("正在连接,请等待.....");
    try{
      aftp =new FtpClient(hostname);
      aftp.login(uid,pwd);
      aftp.binary();
      showFileContents();
    }
    catch(FtpLoginException e){
    a="无权限与主机:"+hostname+"连接!";
    LblPrompt.setText(a)
      

  6.   

    //继续!!
    return false;
    }
    catch (IOException e){
    a="连接主机:"+hostname+"失败!";
    LblPrompt.setText(a);
    return false;
    }
    catch(SecurityException e)
    {
    a="无权限与主机:"+hostname+"连接!";
    LblPrompt.setText(a);
    return false;
    }
    LblPrompt.setText("连接主机:"+hostname+"成功!");
    return true;
    }public void stop()
    {
    try
    {
    aftp.closeServer();
    }
    catch(IOException e)
    {
    }
    }public void paint(Graphics g){
    }public boolean action(Event evt,Object obj)
    {
    if (evt.target == BtnConn)
    {
    LblPrompt.setText("正在连接,请等待.....");
    if (connect(TxtHost.getText(),TxtUID.getText(),TxtPWD.getText()))
    {
    BtnConn.setEnabled(false);
    BtnClose.setEnabled(true);
    }
    return true;
    }
    if (evt.target == BtnClose)
    {
    stop();
    BtnConn.enable(true);
    BtnClose.enable(false);
    LblPrompt.setText("与主机"+hostname+"连接已断开!");
    return true;
    }
    return super.action(evt,obj);
    }
    public boolean sendFile(String filepathname){
    boolean result=true;
    if (aftp != null)
    {
    LblPrompt.setText("正在粘贴文件,请耐心等待....");String  contentperline;
    try{
    a="粘贴成功!";
    String fg =new  String("\\");
    int index = filepathname.lastIndexOf(fg);
    String filename = filepathname.substring(index+1);
    File localFile ;
    localFile = new File(filepathname) ;
    RandomAccessFile sendFile = new RandomAccessFile(filepathname,"r");
    //
    sendFile.seek(0);
    outs = aftp.put(filename);
    outputs = new DataOutputStream(outs);
    while (sendFile.getFilePointer() !=sendFile.length())
    {
      ch = sendFile.read();
      outputs.write(ch);
    }
    outs.close();
    sendFile.close();
    }
    catch(IOException e){
      a = "粘贴失败!";
      result = false ;}
    LblPrompt.setText(a);
    showFileContents();
    }
    else{
    result = false;
    }
    return result;
    }public void showFileContents()
    {
    StringBuffer buf = new StringBuffer();
    lsArea.setText("");
    try
    {
    ins= aftp.list();
    while ((ch=ins.read())!=0){
      buf.append((char)ch);
    }
        lsArea.appendText(buf.toString());
    ins.close();
            }
    catch(IOException e)
    {
    }
    }
            public static void main(String args[]){
                 Frame f = new Frame("FTP Client");
                 f.addWindowListener(new WindowAdapter(){
                   public void windowClosing(WindowEvent e){
                       System.exit(0);
                   }             });
                 FtpApplet ftp = new  FtpApplet();
                 ftp.init();
                 ftp.start();
                 f.add(ftp);
                 f.pack();
                 f.setVisible(true);
            }
    }