public void run() {
try {
doService(clientSocket, listWriter);
- //FIXME: also close the BR and PW?
clientSocket.close();
- //FIXME: remove the associated PW from the ArrayList
} catch (IOException e) {
System.err.println("IOException : " + e);
e.printStackTrace();
public void doService(Socket clientSocket, ArrayList<PrintWriter> sharedList) throws IOException {
BufferedReader in;
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
- sharedList.add(new PrintWriter(clientSocket.getOutputStream()));
+ PrintWriter OWriter = new PrintWriter(clientSocket.getOutputStream());
+ sharedList.add(OWriter);
boolean end = false;
while (!end) {
String theLine = in.readLine();
- if (theLine.equals("."))
+ if (theLine.equals(".")) {
end = true; // le thread de service doit terminer
+ break; // do not broadcast the dot that will close clients threads
+ }
broadcastMsg(theLine);
}
+ sharedList.remove(OWriter);
+ if (in != null)
+ in.close();
+ if (OWriter != null)
+ OWriter.close();
System.out.println("Fin du thread repondant au client, port "
+ clientSocket.getPort());
}