Fichier SingleThreadEchoServer.java
import java.io.*;
import java.net.*;
public class SingleThreadEchoServer {
public final static int DEFAULT_PORT = 6789;
public static void main (String[] args) throws IOException {
int port; // no de port du service
String line = null;
ServerSocket server;
Socket client;
DataInputStream in;
PrintStream out;
// Tests d’arguments switch(args.length) {
case 0 : port = DEFAULT_PORT;
break;
case 1 : try {
port = Integer.parseInt (args[0]);
} catch (NumberFormatException e) { port = DEFAULT_PORT;
} break;
default :
throw new IllegalArgumentException ("Syntaxe : STServer [<port>]");
}
// Creation de socket serveur
System.out.println ("Demarrage sur le port " + port);
server = new ServerSocket (port);
System.out.println ("En ecoute ...");
// Boucle generale et service while (true) {
// Acceptation de connexion client = server.accept();
System.out.println ("Connexion a " + client.getInetAddress() +
" acceptee");
System.out.flush();
// Capture des flux de reception et d’envoi
in = new DataInputStream(client.getInputStream());
out = new PrintStream(client.getOutputStream());
//--- 1
// TRAITEMENT DU SERVICE D’ECHO //--- while (true) {
// lire une ligne line = in.readLine();
if ((line == null) || (line.equals("exit"))) break;
// ecrire la ligne out.println(line);
}
if (line == null) {
// Sortie du service : le client a termine
System.out.println ("Fermeture de socket client");
client.close ();
} else if (line.equals("exit")) { // Fermeture de socket serveur System.out.println ("Fermeture des socket client & serveur");
client.close ();
server.close ();
break;
}
}// while(true) }/* main() */
}/* class STServer */
2