// This example is from _Java Examples in a Nutshell_. (http://www.oreilly.com) // Copyright (c) 1997 by David Flanagan // This example is provided WITHOUT ANY WARRANTY either expressed or implied. // You may study, use, modify, and distribute it for non-commercial purposes. // For any commercial use, see http://www.davidflanagan.com/javaexamples import java.io.*; import java.net.*; /** * This program waits to receive datagrams sent the specified port. * When it receives one, it displays the sending host and prints the * contents of the datagram as a string. Then it loops and waits again. **/ public class UDPReceive { public static void main(String args[]) { try { if (args.length != 1) throw new IllegalArgumentException("Wrong number of arguments"); // Get the port from the command line int port = Integer.parseInt(args[0]); // Create a socket to listen on the port. DatagramSocket dsocket = new DatagramSocket(port); // Create a buffer to read datagrams into. If anyone sends us a // packet containing more than will fit into this buffer, the excess // will simply be discarded! byte[] buffer = new byte[2048]; // Now loop forever, waiting to receive packets and printing them out. for(;;) { // Create a packet with an empty buffer to receive data DatagramPacket packet = new DatagramPacket(buffer, buffer.length); // Wait to receive a datagram dsocket.receive(packet); // Convert the contents to a string, and display them String msg = new String(buffer, 0, packet.getLength()); System.out.println(packet.getAddress().getHostName() + ": " + msg); } } catch (Exception e) { System.err.println(e); System.err.println("Usage: java UDPReceive "); } } }