sindibadthesailor

Programme serveur multithread

Mar 17th, 2023
643
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.70 KB | Source Code | 0 0
  1. //Exemple inspire du livre _Java in a Nutshell_
  2. import java.io.*;
  3. import java.net.*;
  4. public class MonServeur extends Thread {
  5. public final static int DEFAULT_PORT = 6789;
  6. protected int port;
  7. protected ServerSocket listen_socket;
  8. // traitement des erreurs
  9. public static void fail(Exception e, String msg)
  10. {
  11. System.err.println(msg + ": " + e);
  12. System.exit(1);
  13. }
  14. // Crée un serveur TCP : c'est un objet de la classe ServerSocket
  15. // Puis lance l'écoute du serveur.
  16. public MonServeur(int port) {
  17. this.port = port;
  18. if (port == 0) port = DEFAULT_PORT;
  19. try {
  20. listen_socket = new ServerSocket(port);
  21. } catch (IOException e) {
  22.     fail(e, "Pb lors de la creation de la socket server");
  23. }
  24. System.out.println("Serveur lance sur le port " + port);
  25. this.start();
  26. }
  27.  
  28. // Le corps de la thread d'ecoute :
  29. // Le serveur ecoute et accepte les connections.
  30. // pour chaque connexion, il cree une thread
  31. // (objet de la classe Connection,
  32. // classe derivee de la classe Thread)
  33. // qui va la traiter.
  34. public void run() {
  35. try {
  36. while(true) {
  37. Socket client_socket =
  38. listen_socket.accept();
  39. Connection c = new
  40. Connection(client_socket);
  41. } }
  42. catch (IOException e) {
  43. fail(e, "Pb lors de l'ecoute");
  44. }
  45. }
  46. // Le lancement du programme :
  47. // - initialise le port d'écoute
  48. // - lance la construction du serveur TCP
  49. public static void main(String[] args) {
  50. int port = 0;
  51. if (args.length == 1) {
  52. try {
  53. port = Integer.parseInt(args[0]); }
  54. catch (NumberFormatException e) {
  55. port = 0;
  56. }
  57. }
  58. new MonServeur(port);
  59. }
  60. }
  61.  
  62.  
  63. // la classe Connection : c'est une thread
  64. class Connection extends Thread {
  65. protected Socket client;
  66. protected BufferedReader in;
  67. protected PrintWriter out;
  68. // Initialise les streams and lance la thread
  69. public Connection(Socket client_socket) {
  70. client = client_socket;
  71. try {
  72. in = new BufferedReader(new
  73. InputStreamReader(client.getInputStream()));
  74. out = new
  75. PrintWriter(client.getOutputStream());
  76. }
  77. catch (IOException e) {
  78. try { client.close(); }
  79. catch (IOException e2) { ; }
  80.     System.err.println("Exception lors de l'ouverture des sockets :" + e);
  81. return;
  82. }
  83.     this.start();
  84. }
  85. //Fournit le service (inverse la ligne recue et la retourne)
  86. public void run() {
  87.     String line;
  88.     StringBuffer revline;
  89.     int len;
  90. try {
  91.     for(;;) {
  92.         // lit la ligne
  93.         line = in.readLine();
  94.         // Si cette ligne est vide, le serveur se termine
  95.         if (line == null) break;
  96.         // sinon l'écrit a l'envers
  97.         len = line.length();
  98.         revline = new StringBuffer(len);
  99.         for(int i = len-1; i >= 0; i--)
  100.         revline.insert(len-1-i, line.charAt(i));
  101.         // et l'envoie dans la socket
  102.         out.println(revline);
  103.         out.flush();
  104. }
  105. } catch (IOException e) { ; }
  106. finally {
  107.     try { client.close(); }
  108.     catch (IOException e2) {;}
  109. }
  110. }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment