75 lines
1.9 KiB
Java
75 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 socket;
|
|
private final Client client;
|
|
private boolean running = true;
|
|
|
|
public ClientHandler(DatagramSocket socket, Client client) {
|
|
this.socket = socket;
|
|
this.client = client;
|
|
}
|
|
|
|
public void stop() {
|
|
running = false;
|
|
if (socket != null && !socket.isClosed()) {
|
|
socket.close();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
System.out.println(
|
|
"Started handler for client " +
|
|
client.getAddress() +
|
|
":" +
|
|
client.getPort()
|
|
);
|
|
|
|
// try {
|
|
// socket.setSoTimeout(30000);
|
|
// } catch (Exception e) {
|
|
// System.err.println("Could not set socket timeout");
|
|
// }
|
|
|
|
while (running && !socket.isClosed()) {
|
|
DatagramPacket packet = Server.receivedPacket(socket);
|
|
if (packet == null) continue;
|
|
|
|
String message = new String(
|
|
packet.getData(),
|
|
0,
|
|
packet.getLength()
|
|
);
|
|
System.out.println(
|
|
"Received from " +
|
|
client.getAddress() +
|
|
":" +
|
|
client.getPort() +
|
|
": " +
|
|
message
|
|
);
|
|
// Reply with echo
|
|
// String response = "ECHO: " + message;
|
|
// Server.sendMessage(
|
|
// socket,
|
|
// response,
|
|
// client.getAddress(),
|
|
// client.getPort()
|
|
// );
|
|
}
|
|
|
|
System.out.println(
|
|
"Client handler terminated for " +
|
|
client.getAddress() +
|
|
":" +
|
|
client.getPort()
|
|
);
|
|
}
|
|
}
|