请问高手们,在即时通信软件设计中,
如何实现两已知IP客户端之间的文件传输,
小妹是菜鸟,知道的帮个忙啊

解决方案 »

  1.   

    如果是局域网,采用P2P方式比较好,其它采用C/S方式
    客户端创建一个socket,去连接对等端Server的指定端口,Server端
    创建一个ServerSocket来监听连接,有新连接过来就给它指定一个socket
    然后相互传输文件,根据程序需要:   Client                 Server
         |                      |
     create socket       create ServerSocket
         |                      |
    connect to server   accept socket from client
         |                      |
    send/recieve msg       recieve/send msg如果想看P2P见这里:http://blog.jy.js.cn/14906/viewspace_13895.html====================================
    最后,MM我亲一口吧!
      

  2.   

    import java.io.*;
    import java.net.*;
    class ServerTest{
    public static final int Port=8080;

    public ServerTest(String fileName){
    try{
    ServerSocket server=new ServerSocket(Port);

    try{
    Socket connection=server.accept();
    System.out.println("Connection to client succeed");

    File file=new File(fileName);
    System.out.println(file.getName());

    BufferedInputStream in=
    new BufferedInputStream(
    new FileInputStream(file)
    );

    BufferedOutputStream out=
    new BufferedOutputStream(
    new DataOutputStream(connection.getOutputStream())
    );

    int c;
    while((c=in.read())!=-1)
    out.write(c);

    try{
    connection.close();
    }
    catch(IOException e){
    }
    }
    catch(IOException e){
    System.err.println(e);
    }
    }
    catch(IOException e){
    System.err.println(e);
    }
    }
    public  static void main(String [] args){
    ServerTest app=new ServerTest("D:\\Bad.mp3");
    }
    }
    ////////////////////////////////////////////////////////
    import java.io.*;
    import java.net.*;
    class ClientTest{
    public ClientTest(String fileName){

    try{
    Socket socket=new Socket("192.168.4.20",ServerTest.Port);
    System.out.println("Connection to Server succeed");

    File file=new File("E:\\"+fileName);
    file.createNewFile();

    BufferedInputStream in=
    new BufferedInputStream(
    new DataInputStream(socket.getInputStream())
    );

    BufferedOutputStream out=
    new BufferedOutputStream(
    new FileOutputStream(file)
    );
    int c;
    while((c=in.read())!=-1)
    out.write(c);
    out.flush();


    }
    catch(UnknownHostException e){
    System.err.println(e);
    }
    catch(IOException e){
    System.err.println(e);
    }
    }
    public static void main(String [] args){
    ClientTest app=new ClientTest("Bad.mp3");
    }
    }