import java.net.*; import java.io.*; public abstract class UDPServer extends Thread { private int bufferSize; // in bytes protected DatagramSocket ds; public UDPServer(int port, int bufferSize) throws SocketException { this.bufferSize = bufferSize; this.ds = new DatagramSocket(port); } public UDPServer(int port) throws SocketException { this(port, 8192); } public void run() { byte[] buffer = new byte[bufferSize]; while (true) { DatagramPacket incoming = new DatagramPacket(buffer, buffer.length); try { ds.receive(incoming); this.respond(incoming); } catch (IOException e) { System.err.println(e); } } // end while } // end run public abstract void respond(DatagramPacket request); }