org.apache.commons.net.tftp

Class TFTPClient

public class TFTPClient extends TFTP

The TFTPClient class encapsulates all the aspects of the TFTP protocol necessary to receive and send files through TFTP. It is derived from the TFTP because it is more convenient than using aggregation, and as a result exposes the same set of methods to allow you to deal with the TFTP protocol directly. However, almost every user should only be concerend with the the open() , close() , sendFile() , and receiveFile() methods. Additionally, the setMaxTimeouts() and setDefaultTimeout() methods may be of importance for performance tuning.

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.

Author: Daniel F. Savarese

See Also: TFTP TFTPPacket

Field Summary
static intDEFAULT_MAX_TIMEOUTS
The default number of times a receive attempt is allowed to timeout before ending attempts to retry the receive and failing.
Constructor Summary
TFTPClient()
Creates a TFTPClient instance with a default timeout of DEFAULT_TIMEOUT, maximum timeouts value of DEFAULT_MAX_TIMEOUTS, a null socket, and buffered operations disabled.
Method Summary
intgetMaxTimeouts()
Returns the maximum number of times a receive attempt is allowed to timeout before ending attempts to retry the receive and failing.
intreceiveFile(String filename, int mode, OutputStream output, InetAddress host, int port)
Requests a named file from a remote host, writes the file to an OutputStream, closes the connection, and returns the number of bytes read.
intreceiveFile(String filename, int mode, OutputStream output, String hostname, int port)
Requests a named file from a remote host, writes the file to an OutputStream, closes the connection, and returns the number of bytes read.
intreceiveFile(String filename, int mode, OutputStream output, InetAddress host)
Same as calling receiveFile(filename, mode, output, host, TFTP.DEFAULT_PORT).
intreceiveFile(String filename, int mode, OutputStream output, String hostname)
Same as calling receiveFile(filename, mode, output, hostname, TFTP.DEFAULT_PORT).
voidsendFile(String filename, int mode, InputStream input, InetAddress host, int port)
Requests to send a file to a remote host, reads the file from an InputStream, sends the file to the remote host, and closes the connection.
voidsendFile(String filename, int mode, InputStream input, String hostname, int port)
Requests to send a file to a remote host, reads the file from an InputStream, sends the file to the remote host, and closes the connection.
voidsendFile(String filename, int mode, InputStream input, InetAddress host)
Same as calling sendFile(filename, mode, input, host, TFTP.DEFAULT_PORT).
voidsendFile(String filename, int mode, InputStream input, String hostname)
Same as calling sendFile(filename, mode, input, hostname, TFTP.DEFAULT_PORT).
voidsetMaxTimeouts(int numTimeouts)
Sets the maximum number of times a receive attempt is allowed to timeout during a receiveFile() or sendFile() operation before ending attempts to retry the receive and failing.

Field Detail

DEFAULT_MAX_TIMEOUTS

public static final int DEFAULT_MAX_TIMEOUTS
The default number of times a receive attempt is allowed to timeout before ending attempts to retry the receive and failing. The default is 5 timeouts.

Constructor Detail

TFTPClient

public TFTPClient()
Creates a TFTPClient instance with a default timeout of DEFAULT_TIMEOUT, maximum timeouts value of DEFAULT_MAX_TIMEOUTS, a null socket, and buffered operations disabled.

Method Detail

getMaxTimeouts

public int getMaxTimeouts()
Returns the maximum number of times a receive attempt is allowed to timeout before ending attempts to retry the receive and failing.

Returns: The maximum number of timeouts allowed.

receiveFile

public int receiveFile(String filename, int mode, OutputStream output, InetAddress host, int port)
Requests a named file from a remote host, writes the file to an OutputStream, closes the connection, and returns the number of bytes read. A local UDP socket must first be created by open() before invoking this method. This method will not close the OutputStream containing the file; you must close it after the method invocation.

Parameters: filename The name of the file to receive. mode The TFTP mode of the transfer (one of the MODE constants). output The OutputStream to which the file should be written. host The remote host serving the file. port The port number of the remote TFTP server.

Throws: IOException If an I/O error occurs. The nature of the error will be reported in the message.

receiveFile

public int receiveFile(String filename, int mode, OutputStream output, String hostname, int port)
Requests a named file from a remote host, writes the file to an OutputStream, closes the connection, and returns the number of bytes read. A local UDP socket must first be created by open() before invoking this method. This method will not close the OutputStream containing the file; you must close it after the method invocation.

Parameters: filename The name of the file to receive. mode The TFTP mode of the transfer (one of the MODE constants). output The OutputStream to which the file should be written. hostname The name of the remote host serving the file. port The port number of the remote TFTP server.

Throws: IOException If an I/O error occurs. The nature of the error will be reported in the message. UnknownHostException If the hostname cannot be resolved.

receiveFile

public int receiveFile(String filename, int mode, OutputStream output, InetAddress host)
Same as calling receiveFile(filename, mode, output, host, TFTP.DEFAULT_PORT).

Parameters: filename The name of the file to receive. mode The TFTP mode of the transfer (one of the MODE constants). output The OutputStream to which the file should be written. host The remote host serving the file.

Throws: IOException If an I/O error occurs. The nature of the error will be reported in the message.

receiveFile

public int receiveFile(String filename, int mode, OutputStream output, String hostname)
Same as calling receiveFile(filename, mode, output, hostname, TFTP.DEFAULT_PORT).

Parameters: filename The name of the file to receive. mode The TFTP mode of the transfer (one of the MODE constants). output The OutputStream to which the file should be written. hostname The name of the remote host serving the file.

Throws: IOException If an I/O error occurs. The nature of the error will be reported in the message. UnknownHostException If the hostname cannot be resolved.

sendFile

public void sendFile(String filename, int mode, InputStream input, InetAddress host, int port)
Requests to send a file to a remote host, reads the file from an InputStream, sends the file to the remote host, and closes the connection. A local UDP socket must first be created by open() before invoking this method. This method will not close the InputStream containing the file; you must close it after the method invocation.

Parameters: filename The name the remote server should use when creating the file on its file system. mode The TFTP mode of the transfer (one of the MODE constants). host The remote host receiving the file. port The port number of the remote TFTP server.

Throws: IOException If an I/O error occurs. The nature of the error will be reported in the message.

sendFile

public void sendFile(String filename, int mode, InputStream input, String hostname, int port)
Requests to send a file to a remote host, reads the file from an InputStream, sends the file to the remote host, and closes the connection. A local UDP socket must first be created by open() before invoking this method. This method will not close the InputStream containing the file; you must close it after the method invocation.

Parameters: filename The name the remote server should use when creating the file on its file system. mode The TFTP mode of the transfer (one of the MODE constants). hostname The name of the remote host receiving the file. port The port number of the remote TFTP server.

Throws: IOException If an I/O error occurs. The nature of the error will be reported in the message. UnknownHostException If the hostname cannot be resolved.

sendFile

public void sendFile(String filename, int mode, InputStream input, InetAddress host)
Same as calling sendFile(filename, mode, input, host, TFTP.DEFAULT_PORT).

Parameters: filename The name the remote server should use when creating the file on its file system. mode The TFTP mode of the transfer (one of the MODE constants). host The name of the remote host receiving the file.

Throws: IOException If an I/O error occurs. The nature of the error will be reported in the message. UnknownHostException If the hostname cannot be resolved.

sendFile

public void sendFile(String filename, int mode, InputStream input, String hostname)
Same as calling sendFile(filename, mode, input, hostname, TFTP.DEFAULT_PORT).

Parameters: filename The name the remote server should use when creating the file on its file system. mode The TFTP mode of the transfer (one of the MODE constants). hostname The name of the remote host receiving the file.

Throws: IOException If an I/O error occurs. The nature of the error will be reported in the message. UnknownHostException If the hostname cannot be resolved.

setMaxTimeouts

public void setMaxTimeouts(int numTimeouts)
Sets the maximum number of times a receive attempt is allowed to timeout during a receiveFile() or sendFile() operation before ending attempts to retry the receive and failing. The default is DEFAULT_MAX_TIMEOUTS.

Parameters: numTimeouts The maximum number of timeouts to allow. Values less than 1 should not be used, but if they are, they are treated as 1.