public class TCPUpperCaseServer {
  private final ServerSocket serverSocket;
  private final Charset charset;
  
  public TCPUpperCaseServer(int listeningPort, String charsetName) throws IOException {
    this.serverSocket = new ServerSocket(listeningPort);
    this.charset = Charset.forName(charsetName);
  }

  void serve(Socket client) {
    // To be completed...
  }

  public void launchIterative() throws IOException {
    while(!Thread.interrupted()) {
      // if accept() throws an exception, propagate it: server's down
      Socket client = serverSocket.accept();
      System.out.println("New client accepted : " + client.getRemoteSocketAddress());      
      // serve this client...
      serve(client);
    }
  }
  
  public static void main(String[] args) throws IOException {
    int maxClient = Integer.parseInt(args[0]);
    int listeningPort = Integer.parseInt(args[1]);
    TCPUpperCaseServer server = new TCPUpperCaseServer(listeningPort, args[2]);
    server.launchIterative();
  }
}
