TD2: Add multithreaded server primary code.
[TD_SR.git] / TD2 / server / EchoServerThreadService.java
diff --git a/TD2/server/EchoServerThreadService.java b/TD2/server/EchoServerThreadService.java
new file mode 100644 (file)
index 0000000..e04d18f
--- /dev/null
@@ -0,0 +1,58 @@
+import java.net.*;\r
+import java.io.*;\r
+import java.util.*;\r
+\r
+public class EchoServerThreadService implements Runnable {\r
+\r
+       private Socket clientSocket;\r
+       private ArrayList<PrintWriter> listWriter;\r
+\r
+       EchoServerThreadService(Socket clientSocket) {\r
+               System.out.println("Creation d'un thread pour repondre a un client, port " + clientSocket.getPort());\r
+               this.clientSocket = clientSocket;\r
+       }\r
+\r
+       public void run() {\r
+               try {\r
+                       doService(clientSocket);\r
+                       clientSocket.close();\r
+               } catch (IOException e) {\r
+                       System.err.println("IOException : " + e);\r
+                       e.printStackTrace();\r
+               }\r
+               finally {\r
+                       try {\r
+                               if (this.clientSocket != null)\r
+                                       this.clientSocket.close();\r
+                       } catch (IOException e) {\r
+                               System.err.println("IOException : " + e);\r
+                               e.printStackTrace();\r
+                       }\r
+               }\r
+       }\r
+\r
+       public void doService(Socket clientSocket) throws IOException {\r
+               BufferedReader in;\r
+               PrintStream out;\r
+               in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));\r
+               out = new PrintStream(clientSocket.getOutputStream());\r
+               //listWriter.add(new PrintWriter(clientSocket.getOutputStream()));\r
+               boolean end = false;\r
+               while (!end) {\r
+                       String theLine = in.readLine();\r
+                       if (theLine.equals("."))\r
+                               end = true; // le thread de service doit terminer\r
+                       out.println(theLine);\r
+               }\r
+               System.out.println("Fin du thread repondant au client, port "\r
+                                                       + clientSocket.getPort());\r
+       }\r
+\r
+       public void broadcastMsg(String msg) {\r
+               for (int i = 0; i < listWriter.size(); i++) {\r
+                       listWriter.get(i);\r
+               }\r
+\r
+       }\r
+\r
+}\r