multi threading pour 4 clients

This commit is contained in:
trochas
2025-02-04 16:13:17 +01:00
parent b51594f83a
commit 044291dad8
3 changed files with 80 additions and 1 deletions

View File

@@ -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();
}

View 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'");
}
}

View File

@@ -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();
}
}
}