import java.net.*;
/** La classe de réalisation du serveur.
* Voir son <a href="Serveur.java.html">code source</a>.
* @author Jean-Baptiste Yunès
*/
public class Serveur {
/** Le numéro du port du service. */
public static final int PORT = 11111;
/** Le code principale du serveur.
* Si la ligne de commande contient l'argument "-i", le serveur s'éxécute
* en mode itératif (il sérialise le service, une file d'attente de client
* ne devrait pas manquer de se constituer). Sinon il s'exécute en mode
* concurrent/multithreadé; les clients sont servis non par le «serveur»
* lui-même mais par un thread de service.
*/
public static void main(String []arguments) {
boolean iterative = false;
iterative = arguments.length>0 && arguments[0].equals("-i");
if (iterative) System.out.println("mode itératif");
else System.out.println("mode concurrent");
try {
ServerSocket socketAttente = new ServerSocket(PORT);
do {
Socket service = socketAttente.accept();
Service delegué = new Service(service);
if (iterative)
delegué.run(); // attention appel «normal» du service...
else
new Thread(delegué).start(); // appel multithreadé...
} while (true);
} catch(Exception e) {
System.err.println("Erreur sérieuse : "+e);
e.printStackTrace(); System.exit(1);
}
}
}