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); } } }