Files
ClientServer/app/src/main/java/clientserver/server/ClientHandler.java
2025-04-05 00:06:46 +02:00

71 lines
1.9 KiB
Java

package clientserver.server;
import clientserver.client.Client;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ClientHandler implements Runnable {
private final DatagramSocket clientHandlerSocket;
private final Client client;
private boolean running = true;
private final MessageProcessor messageProcessor;
public ClientHandler(DatagramSocket socket, Client client) {
this.clientHandlerSocket = socket;
this.client = client;
this.messageProcessor = new MessageProcessor(
client,
clientHandlerSocket,
this
);
}
public Client getClient() {
return client;
}
public void stop() {
running = false;
if (clientHandlerSocket != null && !clientHandlerSocket.isClosed()) {
clientHandlerSocket.close();
}
}
public static 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 " + prettyPrint(client));
while (running && !clientHandlerSocket.isClosed()) {
DatagramPacket packet = Server.receivedPacket(clientHandlerSocket);
if (packet == null) continue;
String message = new String(
packet.getData(),
0,
packet.getLength()
);
System.out.println(prettyPrint(client) + " : " + message);
messageProcessor.processMessage(message);
}
System.out.println(
"Client handler terminated for " + prettyPrint(client)
);
}
}