repositories
/
TD_SR.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
TD2: Make the server almost work as expected.
[TD_SR.git]
/
TD2
/
server
/
BroadcastThreadService.java
diff --git
a/TD2/server/EchoServerThreadService.java
b/TD2/server/BroadcastThreadService.java
similarity index 53%
rename from
TD2/server/EchoServerThreadService.java
rename to
TD2/server/BroadcastThreadService.java
index 257f15c4d654dd587b82720d9d59189fb5ef4a1b..180f735b49fa442ed5982afa0a286d8c3f0ff879 100644
(file)
--- a/
TD2/server/EchoServerThreadService.java
+++ b/
TD2/server/BroadcastThreadService.java
@@
-2,20
+2,25
@@
import java.net.*;
import java.io.*;
import java.util.*;
import java.io.*;
import java.util.*;
-public class
EchoServer
ThreadService implements Runnable {
+public class
Broadcast
ThreadService implements Runnable {
private Socket clientSocket;
private Socket clientSocket;
- private ArrayList<PrintWriter> listWriter;
+ private
static
ArrayList<PrintWriter> listWriter;
- EchoServerThreadService(Socket clientSocket) {
- System.out.println("Creation d'un thread pour repondre a un client, port " + clientSocket.getPort());
+ BroadcastThreadService(Socket clientSocket) {
+ System.out.println("Creation d'un thread pour repondre a un client, port "
+ + clientSocket.getPort());
this.clientSocket = clientSocket;
this.clientSocket = clientSocket;
+ if (listWriter == null)
+ listWriter = new ArrayList<PrintWriter>();
}
public void run() {
try {
}
public void run() {
try {
- doService(clientSocket);
+ doService(clientSocket, listWriter);
+ //FIXME: also close the BR and PW?
clientSocket.close();
clientSocket.close();
+ //FIXME: remove the associated PW from the ArrayList
} catch (IOException e) {
System.err.println("IOException : " + e);
e.printStackTrace();
} catch (IOException e) {
System.err.println("IOException : " + e);
e.printStackTrace();
@@
-31,28
+36,28
@@
public class EchoServerThreadService implements Runnable {
}
}
}
}
- public void doService(Socket clientSocket) throws IOException {
+ public void doService(Socket clientSocket
, ArrayList<PrintWriter> sharedList
) throws IOException {
BufferedReader in;
BufferedReader in;
- PrintStream out;
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
- out = new PrintStream(clientSocket.getOutputStream());
- //listWriter.add(new PrintWriter(clientSocket.getOutputStream()));
+ sharedList.add(new PrintWriter(clientSocket.getOutputStream()));
boolean end = false;
while (!end) {
String theLine = in.readLine();
if (theLine.equals("."))
end = true; // le thread de service doit terminer
boolean end = false;
while (!end) {
String theLine = in.readLine();
if (theLine.equals("."))
end = true; // le thread de service doit terminer
-
out.println
(theLine);
+
broadcastMsg
(theLine);
}
System.out.println("Fin du thread repondant au client, port "
+ clientSocket.getPort());
}
}
System.out.println("Fin du thread repondant au client, port "
+ clientSocket.getPort());
}
- public void broadcastMsg(String msg) {
- for (int i = 0; i < listWriter.size(); i++) {
- listWriter.get(i);
+ private void broadcastMsg(String msg) {
+ ListIterator<PrintWriter> iter = listWriter.listIterator();
+ while (iter.hasNext()) {
+ PrintWriter cursorPW = iter.next();
+ cursorPW.println(msg);
+ cursorPW.flush();
}
}
-
}
}
}
}