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:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    This is the actual TFTP spec identifier and is equal to 4.
    (package private) InetAddress
    The host the packet is going to be sent or where it came from.
    static final int
    This is the actual TFTP spec identifier and is equal to 3.
    static final int
    This is the actual TFTP spec identifier and is equal to 5.
    (package private) static final int
    The minimum size of a packet.
    (package private) int
    The port the packet came from or is going to.
    static final int
    This is the actual TFTP spec identifier and is equal to 1.
    static final int
    The TFTP data packet maximum segment size in bytes.
    (package private) int
    The type of packet.
    static final int
    This is the actual TFTP spec identifier and is equal to 2.
  • Constructor Summary

    Constructors
    Constructor
    Description
    TFTPPacket(int type, InetAddress address, int port)
    This constructor is not visible outside of the package.
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns the address of the host where the packet is going to be sent or where it came from.
    final int
    Returns the port where the packet is going to be sent or where it came from.
    final int
    Returns the type of the packet.
    Creates a UDP datagram containing all the TFTP packet data in the proper format.
    (package private) abstract DatagramPacket
    newDatagram(DatagramPacket datagram, byte[] data)
    This is an abstract method only available within the package for implementing efficient datagram transport by elminating buffering.
    static final TFTPPacket
    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
    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.
    For debugging

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • MIN_PACKET_SIZE

      static final int MIN_PACKET_SIZE
      The minimum size of a packet. This is 4 bytes. It is enough to store the opcode and blocknumber or other required data depending on the packet type.
      See Also:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • type

      int type
      The type of packet.
    • port

      int port
      The port the packet came from or is going to.
    • address

      InetAddress address
      The host the packet is going to be sent or where it came from.
  • Constructor Details

    • TFTPPacket

      TFTPPacket(int type, InetAddress address, int port)
      This constructor is not visible outside of the package. It is used by subclasses within the package to initialize base data.
      Parameters:
      type - The type of the packet.
      address - The host the packet came from or is going to be sent.
      port - The port the packet came from or is going to be sent.
  • 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.
    • newDatagram

      abstract DatagramPacket newDatagram(DatagramPacket datagram, byte[] data)
      This is an abstract method only available within the package for implementing efficient datagram transport by elminating buffering. It takes a datagram as an argument, and a byte buffer in which to store the raw datagram data. Inside the method, the data should be set as the datagram's data and the datagram returned.
      Parameters:
      datagram - The datagram to create.
      data - The buffer to store the packet and to use in the datagram.
      Returns:
      The datagram argument.
    • 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.
    • getType

      public final int getType()
      Returns the type of the packet.
      Returns:
      The type of the packet.
    • 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.
    • setPort

      public final void setPort(int port)
      Sets the port where the packet is going to be sent.
      Parameters:
      port - the port to set
    • 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
    • toString

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