// chatserver4.java Use: java -cp . chatserver4
 
 import java.net.*;
 import java.io.*;
 import java.util.Vector;
 
 class chatserver4 {
   public static void main(String args[]) throws Exception {
     ServerSocket connection = new ServerSocket( 1025 );
 
     while(true) new server4(connection.accept());
   } 
}
 
 class server4 implements Runnable {
   Socket s;
   static Vector outVector = new Vector();
  
   server4(Socket s) { 
     this.s = s; 
     new Thread(this).start();
   }
 
   public void run() {
     String from;
     BufferedReader in=null;
     PrintStream    out=null;
 
     try {
          in = new BufferedReader(
                  new InputStreamReader(s.getInputStream()));  
         out = new PrintStream(s.getOutputStream());
                                      
          outVector.addElement(out);  
 
          System.out.println("Connected");     
          while( (from=in.readLine()) != null && !from.equals("")) {
            System.out.println( from );
 
            for(int i=0; i<outVector.size(); i++)     
              ((PrintStream)outVector.elementAt(i)).print(from + "\r\n");
          }
          s.close();                                  
      }
      catch(IOException e) {}
      System.out.println("Disconnected");
                                      
      outVector.removeElement(out);   
    }
 }
// chatserver5.java Use: java -cp . chatserver5
 
 import java.net.*;
 import java.io.*;
 import java.util.Vector;
 
 class chatserver5 {
   public static void main(String args[]) throws Exception {
      ServerSocket connection = new ServerSocket( 1025 );
 
      while(true) new server5(connection.accept());
   }
 }
 
 class server5 implements Runnable {
   Socket s;
   static Vector outVector = new Vector();
  
   server5(Socket s) { 
     this.s = s; 
     new Thread(this).start();
   }
 
   public void run() {
     String from;
     BufferedReader in=null;
     PrintStream    out=null;
 
     try {             
       in = new BufferedReader(
              new InputStreamReader(s.getInputStream()));
       out = new PrintStream(s.getOutputStream());
                                                      
       synchronized(outVector) { 
           outVector.addElement(out); 
       }
       System.out.println("Connected");       
             
       while( (from=in.readLine()) != null && !from.equals("")) {
          System.out.println( from );
 
          for(int i=0; i<outVector.size(); i++)       
        ((PrintStream)outVector.elementAt(i)).print(from + "\r\n");
         }
        s.close();                                    
       }
       catch(IOException e) {}
       System.out.println("Disconnected");
                                              
       synchronized(outVector) {
        outVector.removeElement(out); 
       }
    }
 }