Package org.apache.commons.net.tftp

# Class TFTPPacket

java.lang.Object
org.apache.commons.net.tftp.TFTPPacket

Direct Known Subclasses:
  `TFTPAckPacket`, `TFTPDataPacket`, `TFTPErrorPacket`, `TFTPRequestPacket`

public abstract class TFTPPacket extends 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

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `ACKNOWLEDGEMENT`
  This is the actual TFTP spec identifier and is equal to 4.
  `static final int`
  `DATA`
  This is the actual TFTP spec identifier and is equal to 3.
  `static final int`
  `ERROR`
  This is the actual TFTP spec identifier and is equal to 5.
  `static final int`
  `OACK`
  TFTP spec identifier 6.
  `static final int`
  `READ_REQUEST`
  This is the actual TFTP spec identifier and is equal to 1.
  `static final int`
  `SEGMENT_SIZE`
  The TFTP data packet maximum segment size in bytes.
  `static final int`
  `WRITE_REQUEST`
  This is the actual TFTP spec identifier and is equal to 2.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final InetAddress`
  `getAddress()`
  Gets the address of the host where the packet is going to be sent or where it came from.
  `final int`
  `getPort()`
  Gets the port where the packet is going to be sent or where it came from.
  `final int`
  `getType()`
  Gets the type of the packet.
  `abstract DatagramPacket`
  `newDatagram()`
  Creates a UDP datagram containing all the TFTP packet data in the proper format.
  `static final 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.
  `final void`
  `setAddress(InetAddress address)`
  Sets the host address where the packet is going to be sent.
  `final void`
  `setPort(int port)`
  Sets the port where the packet is going to be sent.
  `String`
  `toString()`
  For debugging

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### READ_REQUEST

    public static final int READ_REQUEST
    This is the actual TFTP spec identifier and is equal to 1. Identifier returned by `getType()` indicating a read request packet.
    See Also:
      - Constant Field Values

  - ### WRITE_REQUEST

    public static final int WRITE_REQUEST
    This is the actual TFTP spec identifier and is equal to 2. Identifier returned by `getType()` indicating a write request packet.
    See Also:
      - Constant Field Values

  - ### DATA

    public static final int DATA
    This is the actual TFTP spec identifier and is equal to 3. Identifier returned by `getType()` indicating a data packet.
    See Also:
      - Constant Field Values

  - ### ACKNOWLEDGEMENT

    public static final int ACKNOWLEDGEMENT
    This is the actual TFTP spec identifier and is equal to 4. Identifier returned by `getType()` indicating an acknowledgement packet.
    See Also:
      - Constant Field Values

  - ### ERROR

    public static final int ERROR
    This is the actual TFTP spec identifier and is equal to 5. Identifier returned by `getType()` indicating an error packet.
    See Also:
      - Constant Field Values

  - ### OACK

    public static final int OACK
    TFTP spec identifier 6. Identifier returned by `getType()` indicating an options acknowledgement packet.
    Since:
      3.12.0
    See Also:
      - Constant Field Values

  - ### SEGMENT_SIZE

    public static final int SEGMENT_SIZE
    The TFTP data packet maximum segment size in bytes. This is 512 and is useful for those familiar with the TFTP protocol who want to use the `TFTP` class methods to implement their own TFTP servers or clients.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### 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.

  - ### getAddress

    public final InetAddress getAddress()
    Gets 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()
    Gets 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()
    Gets the type of the packet.
    Returns:
      The type of the packet.

  - ### newDatagram

    public abstract DatagramPacket newDatagram()
    Creates a UDP datagram containing all the TFTP packet data in the proper format. This is an abstract method, exposed to the programmer in case he wants to implement his own TFTP client instead of using the `TFTPClient` class. Under normal circumstances, you should not have a need to call this method.
    Returns:
      A UDP datagram containing the TFTP packet.

  - ### setAddress

    public final void setAddress(InetAddress address)
    Sets the host address where the packet is going to be sent.
    Parameters:
      `address` - the address to set

  - ### setPort

    public final void setPort(int port)
    Sets the port where the packet is going to be sent.
    Parameters:
      `port` - the port to set

  - ### toString

    public String toString()
    For debugging
    Overrides:
      `toString` in class `Object`
    Since:
      3.6