FileDocCategorySizeDatePackage
CharGenUDPClient.javaAPI DocApache Commons NET 1.4.1 API4806Sat Dec 03 10:05:50 GMT 2005org.apache.commons.net

CharGenUDPClient

public final class CharGenUDPClient extends DatagramSocketClient
The CharGenUDPClient class is a UDP implementation of a client for the character generator protocol described in RFC 864. It can also be used for Systat (RFC 866), Quote of the Day (RFC 865), and netstat (port 15). All of these protocols involve sending a datagram to the appropriate port, and reading data contained in one or more reply datagrams. The chargen and quote of the day protocols only send one reply datagram containing 512 bytes or less of data. The other protocols may reply with more than one datagram, in which case you must wait for a timeout to determine that all reply datagrams have been sent.

To use the CharGenUDPClient class, just open a local UDP port with {@link org.apache.commons.net.DatagramSocketClient#open open } and call {@link #send send } to send the datagram that will initiate the data reply. For chargen or quote of the day, just call {@link #receive receive }, and you're done. For netstat and systat, call receive in a while loop, and catch a SocketException and InterruptedIOException to detect a timeout (don't forget to set the timeout duration beforehand). Don't forget to call {@link org.apache.commons.net.DatagramSocketClient#close close() } to clean up properly.

author
Daniel F. Savarese
see
CharGenTCPClient

Fields Summary
public static final int
SYSTAT_PORT
The systat port value of 11 according to RFC 866.
public static final int
NETSTAT_PORT
The netstat port value of 19.
public static final int
QUOTE_OF_DAY_PORT
The quote of the day port value of 17 according to RFC 865.
public static final int
CHARGEN_PORT
The character generator port value of 19 according to RFC 864.
public static final int
DEFAULT_PORT
The default chargen port. It is set to 19 according to RFC 864.
private byte[]
__receiveData
private DatagramPacket
__receivePacket
private DatagramPacket
__sendPacket
Constructors Summary
public CharGenUDPClient()
The default CharGenUDPClient constructor. It initializes some internal data structures for sending and receiving the necessary datagrams for the chargen and related protocols.


                                 
     
    
        // CharGen return packets have a maximum length of 512
        __receiveData = new byte[512];
        __receivePacket = new DatagramPacket(__receiveData, 512);
        __sendPacket = new DatagramPacket(new byte[0], 0);
    
Methods Summary
public byte[]receive()
Receive the reply data from the server. This will always be 512 bytes or less. Chargen and quote of the day only return one packet. Netstat and systat require multiple calls to receive() with timeout detection.

return
The reply data from the server.
exception
IOException If an error occurs while receiving the datagram.

        int length;
        byte[] result;

        _socket_.receive(__receivePacket);

        result = new byte[length = __receivePacket.getLength()];
        System.arraycopy(__receiveData, 0, result, 0, length);

        return result;
    
public voidsend(java.net.InetAddress host, int port)
Sends the data initiation datagram. This data in the packet is ignored by the server, and merely serves to signal that the server should send its reply.

param
host The address of the server.
param
port The port of the service.
exception
IOException If an error occurs while sending the datagram.

        __sendPacket.setAddress(host);
        __sendPacket.setPort(port);
        _socket_.send(__sendPacket);
    
public voidsend(java.net.InetAddress host)
Same as send(host, CharGenUDPClient.DEFAULT_PORT);

        send(host, DEFAULT_PORT);