并发ServerSocket连接

时间:2015-04-09 16:37:06

标签: java file-transfer serversocket

请参阅Andrey Kozhanov的this post'代码。

在Server.java第14行,方法run():

当我发送文件" A"并且在文件传输期间启动另一个客户端并发送其他文件" B",此最后一次传输(" B")将阻止,直到" A"饰面。

如何实现并发服务器接收器?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以为每个新客户创建新的线程。

public class Server extends Thread {

     ...

    @Override
    public void run() {
        try {
            ServerSocket serverSocket = new ServerSocket(PORT);

            while (true) {
                Socket s = serverSocket.accept();
                (new FileSaver(s)).start();

            }
         } catch (Exception e) {
            e.printStackTrace();
         }
     }

    ...
}
public class FileSaver extends Thread {

    Socket socket;

    public FileSaver(Socket socket) {
        socket = socket;
    }

    public saveFile() {
        // save the file here
    };

    public void run() {
        saveFile();
    }

}