feat: refactor client and added a receive thread, possibility to chat with server via client handler

This commit is contained in:
Morph01
2025-04-01 22:20:53 +02:00
committed by Morph01
parent 3f4ff22cea
commit 55a7499339
2 changed files with 157 additions and 77 deletions

View File

@@ -15,13 +15,15 @@ public class ClientHandler implements Runnable {
this.client = client;
}
private void sendConnectedClients() {
Server.sendMessage(clientHandlerSocket, Server.getPseudos(), client.getAddress(), client.getPort());
private void sendConnectedClients(String message) {
if (message.equals("/list")) {
Server.sendMessage(clientHandlerSocket, Server.getPseudos(), client.getAddress(), client.getPort());
}
}
private void handleDeconnexion(String message) {
if (message.equals("DISCONNECT")) {
System.out.println("connexion du client : " + client.getPseudo());
System.out.println("Client deconnection : " + prettyPrint(client));
Server.removeClientHandler(client.getPseudo());
stop();
}
@@ -34,13 +36,22 @@ public class ClientHandler implements Runnable {
}
}
public String prettyPrint(Client client) {
StringBuilder str = new StringBuilder();
str.append(client.getPseudo() +
" (" +
client.getAddress() +
":" +
client.getPort() +
")");
return str.toString();
}
@Override
public void run() {
System.out.println(
"Started handler for client " +
client.getAddress() +
":" +
client.getPort());
prettyPrint(client));
while (running && !clientHandlerSocket.isClosed()) {
DatagramPacket packet = Server.receivedPacket(clientHandlerSocket);
@@ -52,21 +63,16 @@ public class ClientHandler implements Runnable {
0,
packet.getLength());
System.out.println(
"Received from " +
client.getAddress() +
":" +
client.getPort() +
": " +
prettyPrint(client) + " : " +
message);
sendConnectedClients();
handleDeconnexion(message);
// Possibilies
sendConnectedClients(message); // /list command
handleDeconnexion(message); // exit command or DISCONNECT
}
System.out.println(
"Client handler terminated for " +
client.getAddress() +
":" +
client.getPort());
prettyPrint(client));
}
}