 <p>The issue is You are Reading from Clients Input and Writing to Clients Output. Basically you are sending whatever client sends back just a Ping Server. </p> <p><strong>ServerHandler.java</strong></p> <pre><code> while((msg = reader.readLine()) != null) { write.write(msg); } </code></pre> <p>This combined with you initializing the Socket at the Client constructor causes your UI to freeze.</p> <p><strong>Client.java</strong></p> <pre><code> s = new Socket("localhost", 6633); reader = new BufferedReader(new InputStreamReader(s.getInputStream())); write = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); </code></pre> <p>And right below,</p> <pre><code> while ((msg = reader.readLine()) != null) { display(msg); } </code></pre> <p>Your design is wrong for a Connection Oriented (TCP), Multi Client Chat Server. You need to sit down and draw a diagram on how to write from the beginning. </p>