Socket Server with multiple client in java

后端 未结 2 1241
野的像风
野的像风 2021-01-22 02:35

I have to create a socket server which will listen to multiple client. Suppose there are 6 clients connected to the server at the same time and each of the clients are sending s

相关标签:
2条回答
  • 2021-01-22 03:02

    Create a new thread per client connection and continually do a blocking read on the streams in each thread to look for data to process.

    class Server {
    
        ClientThread    threads[];
        int             size;
        ServerSocket    serverSocket;
        boolean         active;
    
        Server() throws Exception {
            /* initialize connection */
            active = true;
            listen();
        }
    
        void listen() throws Exception {
            while ( active ) {
                Socket clientSocket = serverSocket.accept();
                threads[ size++ ] = new ClientThread( clientSocket );
                threads[ size - 1 ].start();
            }
        }
    }
    
    class ClientThread extends Thread {
    
        OutputStream    out;
        InputStream     in;
        boolean         active;
    
        ClientThread( Socket clientSocket ) throws Exception {
            out = clientSocket.getOutputStream();
            in = clientSocket.getInputStream();
        }
    
        public void run() {
            active = true;
            while ( active ) {
                listen();
            }
        }
    
        private void listen() {
            try {
                int res = process( in.read() );
                out.write( res );
            } catch ( Exception e ) {}
        }
    
        private int process( int b ) {
            return -1;
        }
    }
    
    0 讨论(0)
  • 2021-01-22 03:02

    Any reason you can't use a servlet container to do this? This is 10 lines of code in a Servlet + Tomcat/Jetty.

    0 讨论(0)
提交回复
热议问题