feat: add private message

This commit is contained in:
2025-04-05 00:06:46 +02:00
parent bd0cf3c601
commit 13800486ba
5 changed files with 232 additions and 79 deletions

View File

@@ -1,7 +1,6 @@
package clientserver.server;
import clientserver.client.Client;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class MessageProcessor {
@@ -25,11 +24,84 @@ public class MessageProcessor {
return;
}
if (message.equals("/list")) {
handleListCommand();
} else if (message.equals("DISCONNECT")) {
handleDisconnect();
if (message.startsWith("/msg ")) {
handlePrivateMessage(message);
return;
}
switch (message) {
case "/list":
handleListCommand();
break;
case "/help":
handleHelpCommand();
break;
case "/msg":
handleMsgCommand();
break;
case "/disconnect":
handleDisconnect();
break;
}
}
private void handlePrivateMessage(String message) {
String[] parts = message.split(" ", 3);
if (parts.length < 3) {
handleMsgCommand();
return;
}
String targetPseudo = parts[1];
String messageContent = parts[2];
ClientHandler targetHandler = Server.getClientHandler(targetPseudo);
if (targetHandler == null) {
Server.sendMessage(
clientHandlerSocket,
"> User " + targetPseudo + " not found",
client.getAddress(),
client.getPort()
);
return;
}
// Send private message to target
Client targetClient = targetHandler.getClient();
Server.sendMessage(
clientHandlerSocket,
"> " +
client.getPseudo() +
" -> " +
targetClient.getPseudo() +
": " +
messageContent,
targetClient.getAddress(),
targetClient.getPort()
);
// Send confirmation to sender
Server.sendMessage(
clientHandlerSocket,
"> " +
client.getPseudo() +
" -> " +
targetClient.getPseudo() +
": " +
messageContent,
client.getAddress(),
client.getPort()
);
}
private void handleMsgCommand() {
Server.sendMessage(
clientHandlerSocket,
"> /msg <target> <message> : send a message to a client",
client.getAddress(),
client.getPort()
);
}
private void handleListCommand() {
@@ -41,6 +113,17 @@ public class MessageProcessor {
);
}
private void handleHelpCommand() {
Server.sendMessage(
clientHandlerSocket,
"> /list : list all connected clients" +
"\n> /msg <target> <message> : send a message to a client" +
"\n> /disconnect : disconnect from the server",
client.getAddress(),
client.getPort()
);
}
private void handleDisconnect() {
System.out.println(
"Client deconnection : " + ClientHandler.prettyPrint(client)