Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Exemple inspire du livre _Java in a Nutshell_
- import java.io.*;
- import java.net.*;
- public class MonServeur extends Thread {
- public final static int DEFAULT_PORT = 6789;
- protected int port;
- protected ServerSocket listen_socket;
- // traitement des erreurs
- public static void fail(Exception e, String msg)
- {
- System.err.println(msg + ": " + e);
- System.exit(1);
- }
- // Crée un serveur TCP : c'est un objet de la classe ServerSocket
- // Puis lance l'écoute du serveur.
- public MonServeur(int port) {
- this.port = port;
- if (port == 0) port = DEFAULT_PORT;
- try {
- listen_socket = new ServerSocket(port);
- } catch (IOException e) {
- fail(e, "Pb lors de la creation de la socket server");
- }
- System.out.println("Serveur lance sur le port " + port);
- this.start();
- }
- // Le corps de la thread d'ecoute :
- // Le serveur ecoute et accepte les connections.
- // pour chaque connexion, il cree une thread
- // (objet de la classe Connection,
- // classe derivee de la classe Thread)
- // qui va la traiter.
- public void run() {
- try {
- while(true) {
- Socket client_socket =
- listen_socket.accept();
- Connection c = new
- Connection(client_socket);
- } }
- catch (IOException e) {
- fail(e, "Pb lors de l'ecoute");
- }
- }
- // Le lancement du programme :
- // - initialise le port d'écoute
- // - lance la construction du serveur TCP
- public static void main(String[] args) {
- int port = 0;
- if (args.length == 1) {
- try {
- port = Integer.parseInt(args[0]); }
- catch (NumberFormatException e) {
- port = 0;
- }
- }
- new MonServeur(port);
- }
- }
- // la classe Connection : c'est une thread
- class Connection extends Thread {
- protected Socket client;
- protected BufferedReader in;
- protected PrintWriter out;
- // Initialise les streams and lance la thread
- public Connection(Socket client_socket) {
- client = client_socket;
- try {
- in = new BufferedReader(new
- InputStreamReader(client.getInputStream()));
- out = new
- PrintWriter(client.getOutputStream());
- }
- catch (IOException e) {
- try { client.close(); }
- catch (IOException e2) { ; }
- System.err.println("Exception lors de l'ouverture des sockets :" + e);
- return;
- }
- this.start();
- }
- //Fournit le service (inverse la ligne recue et la retourne)
- public void run() {
- String line;
- StringBuffer revline;
- int len;
- try {
- for(;;) {
- // lit la ligne
- line = in.readLine();
- // Si cette ligne est vide, le serveur se termine
- if (line == null) break;
- // sinon l'écrit a l'envers
- len = line.length();
- revline = new StringBuffer(len);
- for(int i = len-1; i >= 0; i--)
- revline.insert(len-1-i, line.charAt(i));
- // et l'envoie dans la socket
- out.println(revline);
- out.flush();
- }
- } catch (IOException e) { ; }
- finally {
- try { client.close(); }
- catch (IOException e2) {;}
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment