CharGenUDPClientpublic 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.
|
Fields Summary |
---|
public static final int | SYSTAT_PORTThe systat port value of 11 according to RFC 866. | public static final int | NETSTAT_PORTThe netstat port value of 19. | public static final int | QUOTE_OF_DAY_PORTThe quote of the day port value of 17 according to RFC 865. | public static final int | CHARGEN_PORTThe character generator port value of 19 according to RFC 864. | public static final int | DEFAULT_PORTThe 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.
int length;
byte[] result;
_socket_.receive(__receivePacket);
result = new byte[length = __receivePacket.getLength()];
System.arraycopy(__receiveData, 0, result, 0, length);
return result;
| public void | send(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.
__sendPacket.setAddress(host);
__sendPacket.setPort(port);
_socket_.send(__sendPacket);
| public void | send(java.net.InetAddress host)Same as send(host, CharGenUDPClient.DEFAULT_PORT);
send(host, DEFAULT_PORT);
|
|