可以下载sun的一个ftp包,实现起来很方便的
在ibm开发者网站的java区有文章和代码例子

解决方案 »

  1.   

    http://www.csdn.net/Develop/article/19%5C19020.shtm
    http://www.chinajavaworld.com/bbsoffline/jinghuaforum21/1968.html
      

  2.   

    建议用已有的ftp包,如果自己从socket写的话,太麻烦曾经用socket写过一个聊天的,对多线程的处理,同步等问题太麻烦了,深有体会
      

  3.   

    要用网络通信,当然要用到Socket,下面是一个实现Ftp功能的例子
    转自http://www.java-cn.com,原贴见http://www.java-cn.com/technology/technology_detail.jsp?id=82
    大连捷通电脑技术有限公司 
    王 淼 
    ---- 在JAVA的编程中,您也许会遇到FTP方面的编程,本文就来演示如何实现它。 ---- 本程序是由JBUILDER2.0来开发的,为了节约篇幅我只列出主要的三个部份。FtpList 部分是用来显示FTP服务器上的文件(附图略)。GetButton部分为从FTP服务器下传一个文件。PutButton 部分为向FTP服务器上传一个文件。别忘了在程序中还要引入两个库文件(import sun.net.*,import sun.net.ftp.*)。以下是这三部分的JAVA源程序。 ---- 1)显示FTP服务器上的文件 void ftpList_actionPerformed(ActionEvent e) { 
    String server=serverEdit.getText(); 
    //输入的FTP服务器的IP地址 
    String user=userEdit.getText(); 
    //登录FTP服务器的用户名 
    String password=passwordEdit.getText(); 
    //登录FTP服务器的用户名的口令 
    String path=pathEdit.getText(); 
    //FTP服务器上的路径 
    try { 
    FtpClient ftpClient=new FtpClient(); 
    //创建FtpClient对象 
    ftpClient.openServer(server); 
    //连接FTP服务器 
    ftpClient.login(user, password); 
    //登录FTP服务器 
    if (path.length()!=0) ftpClient.cd(path); 
    TelnetInputStream is=ftpClient.list(); 
    int c; 
    while ((c=is.read())!=-1) { 
    System.out.print((char) c);} 
    is.close(); 
    ftpClient.closeServer();//退出FTP服务器 
    } catch (IOException ex) {;} 

    2)从FTP服务器上下传一个文件 
    void getButton_actionPerformed(ActionEvent e) { 
    String server=serverEdit.getText(); 
    String user=userEdit.getText(); 
    String password=passwordEdit.getText(); 
    String path=pathEdit.getText(); 
    String filename=filenameEdit.getText(); 
    try { 
    FtpClient ftpClient=new FtpClient(); 
    ftpClient.openServer(server); 
    ftpClient.login(user, password); 
    if (path.length()!=0) ftpClient.cd(path); 
    ftpClient.binary(); 
    TelnetInputStream is=ftpClient.get(filename); 
    File file_out=new File(filename); 
    FileOutputStream os=new 
    FileOutputStream(file_out); 
    byte[] bytes=new byte[1024]; 
    int c; 
    while ((c=is.read(bytes))!=-1) { 
    os.write(bytes,0,c); 

    is.close(); 
    os.close(); 
    ftpClient.closeServer(); 
    } catch (IOException ex) {;} 

    3)向FTP服务器上上传一个文件 void putButton_actionPerformed(ActionEvent e) { 
    String server=serverEdit.getText(); 
    String user=userEdit.getText(); 
    String password=passwordEdit.getText(); 
    String path=pathEdit.getText(); 
    String filename=filenameEdit.getText(); 
    try { 
    FtpClient ftpClient=new FtpClient(); 
    ftpClient.openServer(server); 
    ftpClient.login(user, password); 
    if (path.length()!=0) ftpClient.cd(path); 
    ftpClient.binary(); 
    TelnetOutputStream os=ftpClient.put(filename); 
    File file_in=new File(filename); 
    FileInputStream is=new FileInputStream(file_in); 
    byte[] bytes=new byte[1024]; 
    int c; 
    while ((c=is.read(bytes))!=-1){ 
    os.write(bytes,0,c);} 
    is.close(); 
    os.close(); 
    ftpClient.closeServer(); 
    } catch (IOException ex) {;} 


      

  4.   

    to Wangli:你的聊天程序是每个对话一个线程还是怎么做的,多谢赐教
      

  5.   

    通常情况下,每个socket连接需要两个线程。一个负责发送,一个负责接收。
      

  6.   

    extends thread 和runnable有什么区别?
      

  7.   

    一般 thread 和runnable 结合用比较多
      

  8.   

    http://www.enterprisedt.com换一个包