org.apache.commons.net.tftp

Class TFTPPacket

Known Direct Subclasses:
TFTPAckPacket, TFTPDataPacket, TFTPErrorPacket, TFTPRequestPacket

public abstract class TFTPPacket
extends java.lang.Object

TFTPPacket is an abstract class encapsulating the functionality common to the 5 types of TFTP packets. It also provides a static factory method that will create the correct TFTP packet instance from a datagram. This relieves the programmer from having to figure out what kind of TFTP packet is contained in a datagram and create it himself.

Details regarding the TFTP protocol and the format of TFTP packets can be found in RFC 783. But the point of these classes is to keep you from having to worry about the internals. Additionally, only very few people should have to care about any of the TFTPPacket classes or derived classes. Almost all users should only be concerned with the TFTPClient class receiveFile() and sendFile() methods.

See Also:
TFTPPacketException, TFTP

Field Summary

static int
ACKNOWLEDGEMENT
This is the actual TFTP spec identifier and is equal to 4.
static int
DATA
This is the actual TFTP spec identifier and is equal to 3.
static int
ERROR
This is the actual TFTP spec identifier and is equal to 5.
static int
READ_REQUEST
This is the actual TFTP spec identifier and is equal to 1.
static int
SEGMENT_SIZE
The TFTP data packet maximum segment size in bytes.
static int
WRITE_REQUEST
This is the actual TFTP spec identifier and is equal to 2.

Method Summary

InetAddress
getAddress()
Returns the address of the host where the packet is going to be sent or where it came from.
int
getPort()
Returns the port where the packet is going to be sent or where it came from.
int
getType()
Returns the type of the packet.
abstract DatagramPacket
newDatagram()
Creates a UDP datagram containing all the TFTP packet data in the proper format.
static TFTPPacket
newTFTPPacket(DatagramPacket datagram)
When you receive a datagram that you expect to be a TFTP packet, you use this factory method to create the proper TFTPPacket object encapsulating the data contained in that datagram.
void
setAddress(InetAddress address)
Sets the host address where the packet is going to be sent.
void
setPort(int port)
Sets the port where the packet is going to be sent.

Field Details

ACKNOWLEDGEMENT

public static final int ACKNOWLEDGEMENT
Field Value:
4

DATA

public static final int DATA
Field Value:
3

ERROR

public static final int ERROR
Field Value:
5

READ_REQUEST

public static final int READ_REQUEST
Field Value:
1

SEGMENT_SIZE

public static final int SEGMENT_SIZE
Field Value:
512

WRITE_REQUEST

public static final int WRITE_REQUEST
Field Value:
2

Method Details

getAddress

public final InetAddress getAddress()
Returns the address of the host where the packet is going to be sent or where it came from.

Returns:
The type of the packet.

getPort

public final int getPort()
Returns the port where the packet is going to be sent or where it came from.

Returns:
The port where the packet came from or where it is going.

getType

public final int getType()
Returns the type of the packet.

Returns:
The type of the packet.

newDatagram

public abstract DatagramPacket newDatagram()
Returns:
A UDP datagram containing the TFTP packet.

newTFTPPacket

public static final TFTPPacket newTFTPPacket(DatagramPacket datagram)
            throws TFTPPacketException
When you receive a datagram that you expect to be a TFTP packet, you use this factory method to create the proper TFTPPacket object encapsulating the data contained in that datagram. This method is the only way you can instantiate a TFTPPacket derived class from a datagram.

Parameters:
datagram - The datagram containing a TFTP packet.
Returns:
The TFTPPacket object corresponding to the datagram.
Throws:
TFTPPacketException - If the datagram does not contain a valid TFTP packet.

setAddress

public final void setAddress(InetAddress address)
Sets the host address where the packet is going to be sent. **

setPort

public final void setPort(int port)
Sets the port where the packet is going to be sent. **