import java.net.*; import java.io.*; import java.util.*; /** A client has connected, start collecting info from that user */ public class ClientHandler implements Runnable { protected DataInputStream in; protected PrintStream out; protected Socket socket; protected ChatServer server; String user; public ClientHandler(ChatServer server, Socket socket) throws IOException { this.server = server; this.socket = socket; in = new DataInputStream(socket.getInputStream()); out = new PrintStream(socket.getOutputStream()); user = in.readLine(); // first line is user server.registerClient(user, out); } public void run() { try { String line = // ### read from client // ### copy while loop from previous Server.java here while ... { server.broadcast(user, line); // ### read another line } server.disconnect(user); // ### close down the streams / socket } catch (IOException e) { // EOF // sends disconnect message to everyone server.disconnect(user); } } }