diff --git a/src/main/java/fr/istic/pr/echo/EchoServer.java b/src/main/java/fr/istic/pr/echo/EchoServer.java index f5d2c7e..e6ce623 100644 --- a/src/main/java/fr/istic/pr/echo/EchoServer.java +++ b/src/main/java/fr/istic/pr/echo/EchoServer.java @@ -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(); } diff --git a/src/main/java/fr/istic/pr/echomt/ClientHandlerCharMT.java b/src/main/java/fr/istic/pr/echomt/ClientHandlerCharMT.java new file mode 100644 index 0000000..3c4a948 --- /dev/null +++ b/src/main/java/fr/istic/pr/echomt/ClientHandlerCharMT.java @@ -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'"); + } +} diff --git a/src/main/java/fr/istic/pr/echomt/EchoServerMT.java b/src/main/java/fr/istic/pr/echomt/EchoServerMT.java index 984fdfc..e1121f3 100644 --- a/src/main/java/fr/istic/pr/echomt/EchoServerMT.java +++ b/src/main/java/fr/istic/pr/echomt/EchoServerMT.java @@ -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(); + } + } + }