TD2: Add multithreaded server primary code.
[TD_SR.git] / TD2 / server / EchoServerThreadService.java
CommitLineData
ef258436
JB
1import java.net.*;\r
2import java.io.*;\r
3import java.util.*;\r
4\r
5public class EchoServerThreadService implements Runnable {\r
6\r
7 private Socket clientSocket;\r
8 private ArrayList<PrintWriter> listWriter;\r
9\r
10 EchoServerThreadService(Socket clientSocket) {\r
11 System.out.println("Creation d'un thread pour repondre a un client, port " + clientSocket.getPort());\r
12 this.clientSocket = clientSocket;\r
13 }\r
14\r
15 public void run() {\r
16 try {\r
17 doService(clientSocket);\r
18 clientSocket.close();\r
19 } catch (IOException e) {\r
20 System.err.println("IOException : " + e);\r
21 e.printStackTrace();\r
22 }\r
23 finally {\r
24 try {\r
25 if (this.clientSocket != null)\r
26 this.clientSocket.close();\r
27 } catch (IOException e) {\r
28 System.err.println("IOException : " + e);\r
29 e.printStackTrace();\r
30 }\r
31 }\r
32 }\r
33\r
34 public void doService(Socket clientSocket) throws IOException {\r
35 BufferedReader in;\r
36 PrintStream out;\r
37 in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));\r
38 out = new PrintStream(clientSocket.getOutputStream());\r
39 //listWriter.add(new PrintWriter(clientSocket.getOutputStream()));\r
40 boolean end = false;\r
41 while (!end) {\r
42 String theLine = in.readLine();\r
43 if (theLine.equals("."))\r
44 end = true; // le thread de service doit terminer\r
45 out.println(theLine);\r
46 }\r
47 System.out.println("Fin du thread repondant au client, port "\r
48 + clientSocket.getPort());\r
49 }\r
50\r
51 public void broadcastMsg(String msg) {\r
52 for (int i = 0; i < listWriter.size(); i++) {\r
53 listWriter.get(i);\r
54 }\r
55\r
56 }\r
57\r
58}\r