import java.net.DatagramPacket; import java.net.DatagramSocket; public class EchoServer { static final int PORT = 8000; static final int MAX_DATAGRAM_SIZE = 65536; public static void main(String[] args) throws Exception { // create in/out UDP socket try (DatagramSocket socket = new DatagramSocket( PORT )) { for(;;) { // server endless loop // prepare an empty datagram byte[] buffer = new byte[MAX_DATAGRAM_SIZE]; DatagramPacket echoRequest = new DatagramPacket( buffer, buffer.length ); // wait for an incoming datagram socket.receive( echoRequest ); //get UDP datagram payload byte[] echoRequestData = echoRequest.getData(); int echoRequestLength = echoRequest.getLength(); System.out.println( "GOT: "+ new String( echoRequestData, 0, echoRequestLength)); // prepare an UDP datagram with the reply DatagramPacket echoReply = new DatagramPacket( echoRequestData, echoRequestLength ) ; // as well as destination IP address and port echoReply.setAddress( echoRequest.getAddress() ); echoReply.setPort( echoRequest.getPort() ); //send reply socket.send( echoReply ); } } // socket.close() } }