public void run() { try { // Create character streams for the socket. in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(), true); // goes until ok name while (true) { name = in.readLine(); if (name == null) { return; } if (name.startsWith("TESTLOG:")) { name = name.substring(8); synchronized (server) { if (!server.checkName(name)) { server.addClient(name, in, out); out.println("OK"); break; } else { out.println("FAIL"); } } } } // to UI out.println("Connected as: " + name); // switch to broadcasting mode while (true) { String input = in.readLine(); if (input == null) { return; } server.broadcastMessage(name, input); } } catch (IOException e) { System.out.println(e); } finally { try { socket.close(); } catch (IOException e) { } } }