MultiJabberServer.java




public class MultiJabberServer extends JApplet {
  JTextArea  Xout  = new JTextArea(20, 50);
  int PORT = 8080;

  public void init() {
    Container cp = getContentPane();
    cp.setLayout(new FlowLayout());
    cp.add(new JLabel("MultiJabberServer!"));
    cp.add(new JScrollPane(Xout));
    Xout.append("Welcome to MultiJabberServer \n");
try{
  new mainJabber();
}catch(IOException ioe) {}
  }

 class ServeOneJabber extends Thread {
  private Socket socket;
  private BufferedReader in;
  private PrintWriter out;

  public ServeOneJabber(Socket s) 
      throws IOException {
    socket = s;
    in = new BufferedReader( new InputStreamReader(
          socket.getInputStream()));
    // Enable auto-flush:
    out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(
            socket.getOutputStream())), true);
    start(); // Calls run()
  
  }
  public void run() {
    try { //try1
      while (true) {  
        String str = in.readLine();
        if (str.equals("END")) break;
        Xout.append("Echoing: " + str + "\n");
        out.println(str);
      }
      Xout.append("closing...\n");
    } catch(IOException e) {
      System.err.println("IO Exception");
    } finally {
      try {
        socket.close();
      } catch(IOException e) {
        System.err.println("Socket not closed");
      }
    } // try1
  }//run
}// class ServeOneJabber 

class mainJabber extends Thread  {
  ServerSocket s ;
  Socket socket;

  public mainJabber()
      throws IOException {
    s = new ServerSocket(PORT);
    Xout.append("Server Started\n");
    start();
  }
  public void run() {
     try {
      while(true) {
        // Blocks until a connection occurs:
        try{
            socket = s.accept();
        }catch(IOException ioe){}
        try { 
          new ServeOneJabber(socket);
        } catch(IOException e) {
          // socket.close();
        }    
      }//while
      } finally {
         // s.close();
      }
  } 
 }//class mainJabber

 public static void main(String[] args) {
        Console.run(new MultiJabberServer(), 600, 400);
 }

} ///:~