feat: reformat for better understanding and added a client handler list to main server

This commit is contained in:
Morph01
2025-04-01 10:37:39 +02:00
parent d0c9f59ad2
commit 4894c2555d
3 changed files with 135 additions and 96 deletions

View File

@@ -6,69 +6,72 @@ import java.net.DatagramSocket;
public class ClientHandler implements Runnable {
private final DatagramSocket socket;
private final DatagramSocket clientHandlerSocket;
private final Client client;
private boolean running = true;
public ClientHandler(DatagramSocket socket, Client client) {
this.socket = socket;
this.clientHandlerSocket = socket;
this.client = client;
}
public void sendConnectedClients() {
Server.sendMessage(clientHandlerSocket, Server.getPseudos(), client.getAddress(), client.getPort());
}
public void stop() {
running = false;
if (socket != null && !socket.isClosed()) {
socket.close();
if (clientHandlerSocket != null && !clientHandlerSocket.isClosed()) {
clientHandlerSocket.close();
}
}
@Override
public void run() {
System.out.println(
"Started handler for client " +
client.getAddress() +
":" +
client.getPort()
);
"Started handler for client " +
client.getAddress() +
":" +
client.getPort());
// try {
// socket.setSoTimeout(30000);
// socket.setSoTimeout(30000);
// } catch (Exception e) {
// System.err.println("Could not set socket timeout");
// System.err.println("Could not set socket timeout");
// }
while (running && !socket.isClosed()) {
DatagramPacket packet = Server.receivedPacket(socket);
if (packet == null) continue;
while (running && !clientHandlerSocket.isClosed()) {
DatagramPacket packet = Server.receivedPacket(clientHandlerSocket);
if (packet == null)
continue;
String message = new String(
packet.getData(),
0,
packet.getLength()
);
packet.getData(),
0,
packet.getLength());
System.out.println(
"Received from " +
client.getAddress() +
":" +
client.getPort() +
": " +
message
);
"Received from " +
client.getAddress() +
":" +
client.getPort() +
": " +
message);
sendConnectedClients();
// Reply with echo
// String response = "ECHO: " + message;
// Server.sendMessage(
// socket,
// response,
// client.getAddress(),
// client.getPort()
// socket,
// response,
// client.getAddress(),
// client.getPort()
// );
}
System.out.println(
"Client handler terminated for " +
client.getAddress() +
":" +
client.getPort()
);
"Client handler terminated for " +
client.getAddress() +
":" +
client.getPort());
}
}