BufferedWriter and socket in java, write has no effect

后端 未结 3 2076
余生分开走
余生分开走 2021-01-07 05:28

I\'m writing a small client application to communicate with a server. I open a socket between my client and the server and can read anything that goes out from the server wi

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-01-07 05:50

    Your code is correct. I tested it with a generic server that will echo whatever the client sends and it worked fine (with no changes). It could be that the server your using is faulty. One thing I noticed was that for my server I needed to append a new line character every time I wrote to the output stream, for it to actually send the data. I'm willing to bet that's why your GUI isn't receiving anything. Here's the client thread class from my server:

    class ClientThread extends Thread {
    
        private Socket          sock;
        private InputStream     in;
        private OutputStream    out;
    
        ClientThread( Socket sock ) {
            this.sock = sock;
            try {
                this.in = sock.getInputStream();
                this.out = sock.getOutputStream();
            } catch ( IOException e ) {
                e.printStackTrace();
            }
        }
    
        //Echos whatever the client sends to it
        public void run() {
            BufferedReader bufIn = new BufferedReader( new InputStreamReader( in ) );
            BufferedWriter bufOut = new BufferedWriter( new OutputStreamWriter( out ) );
            while ( true ) {
                try {
                    String msg = bufIn.readLine();
                    System.out.println( "Received: " + msg );
                    bufOut.write( msg );
                    bufOut.newLine(); //HERE!!!!!!
                    bufOut.flush();
                } catch ( IOException e ) {
                    e.printStackTrace();
                }
    
            }
        }
    
    }
    

提交回复
热议问题