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() ); } }