multi threading pour 4 clients
This commit is contained in:
@@ -20,7 +20,7 @@ class echoServer {
|
||||
3. appeler la méthode handleBytes() sur le handler
|
||||
*/
|
||||
Socket socket = serverSocket.accept();
|
||||
ClientHandler clientHandler= new ClientHandlerBytes(socket);
|
||||
ClientHandler clientHandler= new ClientHandlerChar(socket);
|
||||
clientHandler.handle();
|
||||
socket.close();
|
||||
}
|
||||
|
||||
57
src/main/java/fr/istic/pr/echomt/ClientHandlerCharMT.java
Normal file
57
src/main/java/fr/istic/pr/echomt/ClientHandlerCharMT.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package fr.istic.pr.echomt;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.Socket;
|
||||
|
||||
public class ClientHandlerCharMT implements ClientHandlerMT, Runnable {
|
||||
private Socket socket;
|
||||
|
||||
public ClientHandlerCharMT(Socket socket){
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle() {
|
||||
try {
|
||||
//Lecture
|
||||
InputStreamReader isr = new InputStreamReader(socket.getInputStream());
|
||||
BufferedReader in = new BufferedReader(isr);
|
||||
|
||||
//Ecrire
|
||||
OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream());
|
||||
PrintWriter out = new PrintWriter(osw);
|
||||
|
||||
String message;
|
||||
while(socket.isConnected()){
|
||||
while (((message = in.readLine())) != null) {
|
||||
System.out.println("client reçu : " +message);
|
||||
out.println(message);
|
||||
out.flush();
|
||||
}
|
||||
}
|
||||
|
||||
in.close();
|
||||
out.close();
|
||||
isr.close();
|
||||
osw.close();
|
||||
}catch (IOException e){
|
||||
System.out.println(e.getMessage());
|
||||
}finally {
|
||||
try{
|
||||
socket.close();
|
||||
}catch (IOException e){
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
this.handle();
|
||||
throw new UnsupportedOperationException("Unimplemented method 'run'");
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,26 @@
|
||||
package fr.istic.pr.echomt;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
|
||||
public class EchoServerMT {
|
||||
public static void main(String[] args) throws IOException{
|
||||
int portEcoute = 8080;
|
||||
try (ServerSocket serverSocket = new ServerSocket(portEcoute)) {
|
||||
Executor service = Executors.newFixedThreadPool(4);
|
||||
while(true){
|
||||
Socket socket = serverSocket.accept();
|
||||
service.execute(new ClientHandlerCharMT(socket));
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user