Fix server echo

This commit is contained in:
Minh VU
2025-02-03 13:29:42 +01:00
parent e6635fd16b
commit 0039f3401c
2 changed files with 31 additions and 61 deletions

View File

@@ -1,13 +1,9 @@
package fr.istic.pr.echo; package fr.istic.pr.echo;
import java.io.InputStream; import java.io.*;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket; import java.net.Socket;
public class ClientHandlerBytes implements ClientHandler, Runnable { public class ClientHandlerBytes implements ClientHandler {
private Socket socket; private Socket socket;
@@ -16,31 +12,27 @@ public class ClientHandlerBytes implements ClientHandler, Runnable {
} }
public void handle() { public void handle() {
//Lecture du message dans un buffer de bytes
//Envoie du buffer de bytes.
try { try {
InputStream inStream = socket.getInputStream(); //Lecture du message dans un buffer de bytes
InputStream inStream = socket.getInputStream();
byte[] buffer = new byte[8]; byte[] buffer = new byte[8];
inStream.read(buffer); inStream.read(buffer);
String message = new String(buffer); String message = new String(buffer);
System.out.println("client reçu : " + message); System.out.println("client reçu : " + message);
OutputStream outStream = socket.getOutputStream(); //Envoie du buffer de bytes.
OutputStream out = socket.getOutputStream();
outStream.write(buffer); out.write(buffer);
System.out.println("client envoie : " + message); System.out.println("client envoie : " + message);
}catch (IOException e){
} catch (Exception e) { System.out.println(e.getMessage());
System.out.println(e); } finally {
} try {
} socket.close();
}catch (IOException e){
@Override System.out.println(e.getMessage());
public void run() { }
while(!this.socket.isClosed()){
handle();
} }
} }
} }

View File

@@ -1,53 +1,31 @@
package fr.istic.pr.echo; package fr.istic.pr.echo;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.net.Socket; import java.net.Socket;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
//import static jdk.internal.org.jline.utils.Colors.s; class echoServer {
public static void main(String[] args) throws IOException{
public class EchoServer {
private static ExecutorService executorService = Executors.newFixedThreadPool(10);
private ServerSocket serverSocket;
private static EchoServer echoServer;
private void run_Serveur() throws IOException {
//Attente sur le port 8080s //Attente sur le port 8080s
//int num_de_client=1; int portDuServer = 8080;
int portDuServeur= 8080; ServerSocket serverSocket = new ServerSocket(portDuServer);
ServerSocket serverSocket = new ServerSocket(portDuServeur);
try{ try{
while(true){ while(true){
System.out.println("Coucou"); /* Pour chaque client :
1. accepter la connexion.
2. créer un ClientHandler
3. appeler la méthode handleBytes() sur le handler
*/
Socket socket = serverSocket.accept(); Socket socket = serverSocket.accept();
//ClientHandler clientHandler= new ClientHandler(serverSocket,num_de_client); ClientHandler clientHandler= new ClientHandlerBytes(socket);
executorService.submit(new ClientHandlerBytes(socket)); clientHandler.handle();
/* Pour chaque client : socket.close();
1. accepter la connexion.
2. créer un ClientHandler
3. appeler la méthode handleBytes() sur le handler
*/
} }
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); System.out.println(e.getMessage());
} }
} }
private void arret_Serveur(){ }
executorService.shutdownNow();
try{
serverSocket.close();
}catch (Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
echoServer= new EchoServer();
echoServer.run_Serveur();
}
}