Search code examples
javafile-transferserversocket

Concurrent ServerSocket connections


Refer this post in Andrey Kozhanov' code.

In Server.java, line 14, method run():

When I send a file "A" and during file transfer start another Client and send other file "B", this last transfer ("B") will block until "A" finishes.

How can I implement a concurrent server receiver?

Thanks.


Solution

  • You can create new Thread for every new client.

    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();
        }
    
    }