import java.net.*;
import java.io.*;
public class ChatServer {
    public static void main(String[] args) throws IOException {
        int port = 3880;
        ServerSocket serverSocket = null;
        Socket clientSocket = null;
        Slave slave = null;
        slaveOverseer mySlaveOverseer = new slaveOverseer;
        try {
            serverSocket = new ServerSocket(port);
        } catch (IOException e) {
            System.err.println("Could not listen on port: " + port + ".");
            System.exit(1);
        }
        try {
            while (true) {
                try {
                    clientSocket = serverSocket.accept();
                } catch (IOException e) {
                    System.err.println("Accept failed.");
                    System.exit(1);
                }
                slave = new Slave (clientSocket, mySlaveOverseer);      // THis is the only important line.
                slave.start ();                                         // Notice both clientSocket AND mySlaveOverseer
            }                                                           // is passed in.  The slave thread should never
        } finally {                                                     // have to talk to the ChatServer again.  It can simply
            serverSocket.close();                                       // reference mySlaveOverseer
        }
    }
}