首先,你的网络必须是安全的,否则,任何用户都可以远程对计算机有文件访问修改的权限其次,你要实现这种传输的话,你比须有一个服务器,你说的这种东西有点像QQp2p的,那种,那么你不妨做一个session,用套接字的方法实现。在就是看一些关于协议的书籍一般的协议用c实现,你可以用java描述就可以了,很简单的。没有你想象的那么难

解决方案 »

  1.   

    import sun.net.ftp.*;
    import sun.net.*;
    import java.io.*;
    import javax.swing.*;
    import java.util.*;
    public class FTP {  public FTP() {
      }  private static FtpClient m_client;  protected static void disconnect()
      {
        if (m_client != null)
        {
          try
          {
            m_client.closeServer();
          }
          catch (IOException ex)
          {
          }      m_client = null;
        }
      }  protected static boolean connect(String sHost, String user,
                String password ,String sDir)
      {
        try
        {
          m_client = new FtpClient(sHost);
          m_client.login(user, password);
          m_client.cd(sDir);
          m_client.binary();
        }
        catch (Exception ex)
        {
          return false;
        }    return true;
      }  protected static boolean putFiletoServer(String m_sLocalFile,String m_sHostFile)
      {
        if (m_sLocalFile.length()==0)
        {
          return false;
        }    byte[] buffer = new byte[10240];    try
        {
          File f = new File(m_sLocalFile);
          int size = (int)f.length();
          FileInputStream in = new FileInputStream(m_sLocalFile);
          OutputStream out = m_client.put(m_sHostFile);      int counter = 0;
          while(true)
          {
            int bytes = in.read(buffer);
            if (bytes < 0)
              break;
            out.write(buffer, 0, bytes);
            counter += bytes;
          }      out.close();
          in.close();
        }
        catch (Exception ex)
        {
          return false;
        }    return true;
      }
      public static boolean putFile(String pathname,String ftpServer, String ftpUser,
                               String ftpPasswd, String ftpPath)
      {
        if (!connect(ftpServer,ftpUser,ftpPasswd,ftpPath))
        {
          return false;
        }    int pos = pathname.lastIndexOf("/");
        int len = pathname.length();    String filename = pathname.substring(pos+1,len);    if (!putFiletoServer(pathname,filename))
        {
          return false;
        }    disconnect();
        return true;
      }  /*   sample   */
      /*
      public static void main(String[] args)
      {
        boolean b = putFile("1.txt","192.168.2.79","dexin","123456","html");
        System.out.println(b);
      }
      */
    }
      

  2.   

    用ftp得基本语法就可以实现了啊
      

  3.   

    public class ftpServer extends Thread{
    private Socket socketClient;
    private int counter;
    private static String initDir;
    public static void main(String[] args){
    if(args.length != 0) {
     initDir = args[0];
     }else{ initDir = "c:";} try{
      System.out.println("ftp server started!");
      //监听21号端口
      ServerSocket s = new ServerSocket(21);
      for(;;){
       //接受客户端请求
       Socket incoming = s.accept();
       //创建服务线程
       new ftpServer().start();
       
       }
      }catch(Exception e){}
     }
      

  4.   

    你说的这,个人认为用SOCKET对发文件要好解决点.
    IO流转化为Byte[]数组,然后帮定指定ip和端口,以tcp/ip或者udp协议,发送数据包给另一端.如果文件过大就在读取上加while循环.
      

  5.   

    前面问题没有讲清楚,我要传输文件是在两个远程服务器之间传输文件。ftp中的fxp好像能实现这个功能,但不知道怎么写代码
      

  6.   

    找开源的吧!!!不管采用什么方式,反对使用sun.net.ftp.*;功能太有限了。
    ftp服务端--rfc协议的所有命令!!;如果在linux下,又要支持linux命令!!