Java - Reading from a buffered reader (from a socket) is pausing the thread

前端 未结 5 1020
情歌与酒
情歌与酒 2021-01-04 14:31

I have a thread that reads characters from a Buffered reader (created from a socket as follows):

inputStream = new BufferedReader(new InputStreamReader(clien         


        
5条回答
  •  南方客
    南方客 (楼主)
    2021-01-04 15:00

    You have to create ServerSocket That listen to client in every loop.

    ServerSocket socket = new ServerSocket(3000);
    

    Here is my run() method that will wait for client Socket every time

    public void run(){
            boolean dataRecieved = false;
            char[] inputChars = new char[1024];
            int charsRead = 0;
    
            while (!stopNow) {
                try {
                    System.out.println("Listen To Clients:");
    
                    // The ServerSocket has to listen the client each time.
                    InputStreamReader isr = new InputStreamReader( socket.accept().getInputStream() );
                    inputStream = new BufferedReader( isr );
    
                    //Read 1024 characters. Note: This will pause the thread when stream is empty.
                    System.out.println("Reading from stream:");
    
                    if ((charsRead =  inputStream.read(inputChars)) != -1)
                    {
                        System.out.println("Chars read from stream: " + charsRead);  
                        System.out.println(inputChars);
                        System.out.flush();
                    }
                } 
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
        }
    

    You have another minor mistake that halts the code and remove the line

    charsRead =  inputStream.read(inputChars); //<< THIS LINE IS PAUSING THE THREAD!>
    

    Because this line is moved in an if statement.

提交回复
热议问题