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
|
3. appeler la méthode handleBytes() sur le handler
|
||||||
*/
|
*/
|
||||||
Socket socket = serverSocket.accept();
|
Socket socket = serverSocket.accept();
|
||||||
ClientHandler clientHandler= new ClientHandlerBytes(socket);
|
ClientHandler clientHandler= new ClientHandlerChar(socket);
|
||||||
clientHandler.handle();
|
clientHandler.handle();
|
||||||
socket.close();
|
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;
|
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 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