
// ThreadedScoreServer.java
// Andrew Davison, April 2005, ad@fivedots.coe.psu.ac.th

/* Vláknový server, jenž uchovává skóre (a jméno) klientů
   v seznamu 10 nejvyšších bodů.

   Seznam udržuje v souboru SCORFN a při startu jej načítá.
   Server lze ukončit kombinací klávec CTRL a C.

   Server zpracovává požadavek klienta vytvořením objektu typu
   ThreadedScoreHandler.

   Třída je odvozena od souboru ThreadedEchoServer.java (Listing 3-5, p.161) in
      Core Java 2, Volume II -- Advanced Features
      Horstmann and Cornell
      Sun Microsystems Press, 2000, 4th Edition
*/

// import java.io.*;
import java.net.*;


public class ThreadedScoreServer
{
  private static final int PORT = 1234;
  private HighScores hs;


  public ThreadedScoreServer()
  // Souběžně zpracuje klienty v nekonečném cyklu
  {
    hs = new HighScores();
    try {
      ServerSocket serverSock = new ServerSocket(PORT);
      Socket clientSock;
      String cliAddr;

      while (true) {
        System.out.println("Čekám na klienta...");
        clientSock = serverSock.accept();
        cliAddr = clientSock.getInetAddress().getHostAddress();
        new ThreadedScoreHandler(clientSock, cliAddr, hs).start();
      }
    }
    catch(Exception e)
    {  System.out.println(e);  }
  }  // konec metody: ThreadedScoreServer()


  // -----------------------------------

  public static void main(String args[]) 
  {  new ThreadedScoreServer();  }

} // konec třídy: ThreadedScoreServer

