org.apache.commons.net.tftp

## Class TFTPRequestPacket

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

- Direct Known Subclasses:
    TFTPReadRequestPacket, TFTPWriteRequestPacket

      public abstract class TFTPRequestPacket
      extends TFTPPacket

  An abstract class derived from TFTPPacket definiing a TFTP Request packet type. It is subclassed by the `TFTPReadRequestPacket` and `TFTPWriteRequestPacket` classes.

  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:
    `TFTPPacket`, `TFTPReadRequestPacket`, `TFTPWriteRequestPacket`, `TFTPPacketException`, `TFTP`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `(package private) static String[]` | `modeStrings` An array containing the string names of the transfer modes and indexed by the transfer mode constants.

    - ### Fields inherited from class org.apache.commons.net.tftp.TFTPPacket

      `ACKNOWLEDGEMENT, address, DATA, ERROR, MIN_PACKET_SIZE, OACK, port, READ_REQUEST, SEGMENT_SIZE, type, WRITE_REQUEST`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TFTPRequestPacket(InetAddress destination, int port, int type, String fileName, int mode)` Creates a request packet of a given type to be sent to a host at a given port with a file name and transfer mode request.
    `TFTPRequestPacket(int type, DatagramPacket datagram)` Creates a request packet of a given type based on a received datagram.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getFilename()` Gets the requested file name.
    `int` | `getMode()` Gets the transfer mode of the request.
    `Map<String,String>` | `getOptions()` Gets the options extensions of the request as a map.
    `DatagramPacket` | `newDatagram()` Creates a UDP datagram containing all the TFTP request packet data in the proper format.
    `(package private) DatagramPacket` | `newDatagram(DatagramPacket datagram, byte[] data)` This is a method only available within the package for implementing efficient datagram transport by elminating buffering.

    - ### Methods inherited from class org.apache.commons.net.tftp.TFTPPacket

      `getAddress, getPort, getType, newTFTPPacket, setAddress, setPort, toString`

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

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

- - ### Field Detail

    - #### modeStrings

          static final String[] modeStrings

      An array containing the string names of the transfer modes and indexed by the transfer mode constants.

  - ### Constructor Detail

    - #### TFTPRequestPacket

          TFTPRequestPacket(InetAddress destination,
                            int port,
                            int type,
                            String fileName,
                            int mode)

      Creates a request packet of a given type to be sent to a host at a given port with a file name and transfer mode request.
      Parameters:
        `destination` - The host to which the packet is going to be sent.
        `port` - The port to which the packet is going to be sent.
        `type` - The type of the request (either TFTPPacket.READ_REQUEST or TFTPPacket.WRITE_REQUEST).
        `fileName` - The requested file name.
        `mode` - The requested transfer mode. This should be on of the TFTP class MODE constants (e.g., TFTP.NETASCII_MODE).

    - #### TFTPRequestPacket

          TFTPRequestPacket(int type,
                            DatagramPacket datagram)
                     throws TFTPPacketException

      Creates a request packet of a given type based on a received datagram. Assumes the datagram is at least length 4, else an ArrayIndexOutOfBoundsException may be thrown.
      Parameters:
        `type` - The type of the request (either TFTPPacket.READ_REQUEST or TFTPPacket.WRITE_REQUEST).
        `datagram` - The datagram containing the received request.
      Throws:
        `TFTPPacketException` - If the datagram isn't a valid TFTP request packet of the appropriate type.

  - ### Method Detail

    - #### getFilename

          public final String getFilename()

      Gets the requested file name.
      Returns:
        The requested file name.

    - #### getMode

          public final int getMode()

      Gets the transfer mode of the request.
      Returns:
        The transfer mode of the request.

    - #### getOptions

          public final Map<String,String> getOptions()

      Gets the options extensions of the request as a map. The keys are the option names and the values are the option values.
      Returns:
        The options extensions of the request as a map.

    - #### newDatagram

          public final DatagramPacket newDatagram()

      Creates a UDP datagram containing all the TFTP request packet data in the proper format. This is a 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.
      Specified by:
        `newDatagram` in class `TFTPPacket`
      Returns:
        A UDP datagram containing the TFTP request packet.

    - #### newDatagram

          final DatagramPacket newDatagram(DatagramPacket datagram,
                                           byte[] data)

      This is a 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 is set as the datagram's data and the datagram returned.
      Specified by:
        `newDatagram` in class `TFTPPacket`
      Parameters:
        `datagram` - The datagram to create.
        `data` - The buffer to store the packet and to use in the datagram.
      Returns:
        The datagram argument.