FileDocCategorySizeDatePackage
UDPReceive.javaAPI DocExample2486Sat Jan 24 10:44:28 GMT 2004je3.net

UDPReceive

public class UDPReceive extends Object
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.

Fields Summary
public static final String
usage
Constructors Summary
Methods Summary
public static voidmain(java.lang.String[] args)

         
        try {
            if (args.length != 1) 
                throw new IllegalArgumentException("Wrong number of args");
	    
            // 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];
	    
	    // Create a packet to receive data into the buffer
	    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

            // Now loop forever, waiting to receive packets and printing them.
            for(;;) {
                // Wait to receive a datagram
                dsocket.receive(packet);

                // Decode the bytes of the packet to characters, using the 
		// UTF-8 encoding, and then display those characters.
                String msg = new String(buffer, 0, packet.getLength(),"UTF-8");
                System.out.println(packet.getAddress().getHostName() +
				   ": " + msg);
		
		// Reset the length of the packet before reusing it.
		// Prior to Java 1.1, we'd just create a new packet each time.
		packet.setLength(buffer.length);
            }
        }
        catch (Exception e) {
            System.err.println(e);
            System.err.println(usage);
        }