/** * @author Kristof Friedrichsen * @author Ryan Mann * @author Bob Free * @author Pat O'Neill * @version December 15, 2006 **/ package chutesladder; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.util.Vector; public class ChatHandler extends Thread { static Vector handlers = new Vector( 10 ); private Socket socket; private BufferedReader in; private PrintWriter out; public ChatHandler(Socket socket) throws IOException { this.socket = socket; System.out.println( "ChatHandler.java - line 19" ); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println( "ChatHandler.java - line 21" ); out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); } public void run() { String line; System.out.println( "ChatHandler.java - line 26" ); synchronized(handlers) { handlers.addElement(this); System.out.println ("ChatHandler.java -29- this.toString () ==> " + this.toString ()); // add() not found in Vector class } try { System.out.println( "ChatHandler.java - line 34" ); while(!(line = in.readLine()).equalsIgnoreCase("/quit")) { System.out.println( "ChatHandler.java - line 36" ); for(int i = 0; i < handlers.size(); i++) { System.out.println( "ChatHandler.java - line 38" ); synchronized(handlers) { ChatHandler handler = handlers.elementAt(i); System.out.println( "ChatHandler.java - line 41 - " + handler.toString () ); handler.out.println (line); System.out.println( "ChatHandler.java - line 43 - flushing" ); handler.out.flush(); } } } } catch(IOException ioe) { ioe.printStackTrace(); } finally { try { System.out.println( "ChatHandler.java - line 52 - closing in" ); in.close(); System.out.println( "ChatHandler.java - line 54 - closing out" ); out.close(); System.out.println( "ChatHandler.java - ine 56 - closing socket" ); socket.close(); } catch(IOException ioe) { } finally { synchronized(handlers) { System.out.println( "ChatHandler.java - line 61 - removing handlers element(this)" ); handlers.removeElement(this); } } } } }