org.apache.commons.net

Class DatagramSocketClient

Known Direct Subclasses:
CharGenUDPClient, DaytimeUDPClient, DiscardUDPClient, NTPUDPClient, TFTP, TimeUDPClient

public abstract class DatagramSocketClient
extends Object

The DatagramSocketClient provides the basic operations that are required of client objects accessing datagram sockets. It is meant to be subclassed to avoid having to rewrite the same code over and over again to open a socket, close a socket, set timeouts, etc. Of special note is the setDatagramSocketFactory method, which allows you to control the type of DatagramSocket the DatagramSocketClient creates for network communications. This is especially useful for adding things like proxy support as well as better support for applets. For example, you could create a DatagramSocketFactory that requests browser security capabilities before creating a socket. All classes derived from DatagramSocketClient should use the _socketFactory_ member variable to create DatagramSocket instances rather than instantiating them by directly invoking a constructor. By honoring this contract you guarantee that a user will always be able to provide his own Socket implementations by substituting his own SocketFactory.

Author:
Daniel F. Savarese
See Also:
DatagramSocketFactory

Field Summary

protected boolean
_isOpen_
A status variable indicating if the client's socket is currently open.
protected DatagramSocketFactory
_socketFactory_
The datagram socket's DatagramSocketFactory.
protected DatagramSocket
_socket_
The datagram socket used for the connection.
protected int
_timeout_
The timeout to use after opening a socket.

Constructor Summary

DatagramSocketClient()
Default constructor for DatagramSocketClient.

Method Summary

void
close()
Closes the DatagramSocket used for the connection.
int
getDefaultTimeout()
Returns the default timeout in milliseconds that is used when opening a socket.
InetAddress
getLocalAddress()
Returns the local address to which the client's socket is bound.
int
getLocalPort()
Returns the port number of the open socket on the local host used for the connection.
int
getSoTimeout()
Returns the timeout in milliseconds of the currently opened socket.
boolean
isOpen()
Returns true if the client has a currently open socket.
void
open()
Opens a DatagramSocket on the local host at the first available port.
void
open(int port)
Opens a DatagramSocket on the local host at a specified port.
void
open(int port, InetAddress laddr)
Opens a DatagramSocket at the specified address on the local host at a specified port.
void
setDatagramSocketFactory(DatagramSocketFactory factory)
Sets the DatagramSocketFactory used by the DatagramSocketClient to open DatagramSockets.
void
setDefaultTimeout(int timeout)
Set the default timeout in milliseconds to use when opening a socket.
void
setSoTimeout(int timeout)
Set the timeout in milliseconds of a currently open connection.

Field Details

_isOpen_

protected boolean _isOpen_
A status variable indicating if the client's socket is currently open.

_socketFactory_

protected DatagramSocketFactory _socketFactory_
The datagram socket's DatagramSocketFactory. **

_socket_

protected DatagramSocket _socket_
The datagram socket used for the connection. **

_timeout_

protected int _timeout_
The timeout to use after opening a socket. **

Constructor Details

DatagramSocketClient

public DatagramSocketClient()
Default constructor for DatagramSocketClient. Initializes _socket_ to null, _timeout_ to 0, and _isOpen_ to false.

Method Details

close

public void close()
Closes the DatagramSocket used for the connection. You should call this method after you've finished using the class instance and also before you call open() again. _isOpen_ is set to false and _socket_ is set to null. If you call this method when the client socket is not open, a NullPointerException is thrown.

getDefaultTimeout

public int getDefaultTimeout()
Returns the default timeout in milliseconds that is used when opening a socket.

Returns:
The default timeout in milliseconds that is used when opening a socket.

getLocalAddress

public InetAddress getLocalAddress()
Returns the local address to which the client's socket is bound. If you call this method when the client socket is not open, a NullPointerException is thrown.

Returns:
The local address to which the client's socket is bound.

getLocalPort

public int getLocalPort()
Returns the port number of the open socket on the local host used for the connection. If you call this method when the client socket is not open, a NullPointerException is thrown.

Returns:
The port number of the open socket on the local host used for the connection.

getSoTimeout

public int getSoTimeout()
            throws SocketException
Returns the timeout in milliseconds of the currently opened socket. If you call this method when the client socket is not open, a NullPointerException is thrown.

Returns:
The timeout in milliseconds of the currently opened socket.

isOpen

public boolean isOpen()
Returns true if the client has a currently open socket.

Returns:
True if the client has a curerntly open socket, false otherwise.

open

public void open()
            throws SocketException

open

public void open(int port)
            throws SocketException
Opens a DatagramSocket on the local host at a specified port. Also sets the timeout on the socket to the default timeout set by setDefaultTimeout().

_isOpen_ is set to true after calling this method and _socket_ is set to the newly opened socket.

Parameters:
port - The port to use for the socket.

open

public void open(int port,
                 InetAddress laddr)
            throws SocketException
Parameters:
port - The port to use for the socket.
laddr - The local address to use.

setDatagramSocketFactory

public void setDatagramSocketFactory(DatagramSocketFactory factory)
Sets the DatagramSocketFactory used by the DatagramSocketClient to open DatagramSockets. If the factory value is null, then a default factory is used (only do this to reset the factory after having previously altered it).

Parameters:
factory - The new DatagramSocketFactory the DatagramSocketClient should use.

setDefaultTimeout

public void setDefaultTimeout(int timeout)
Parameters:
timeout - The timeout in milliseconds to use for the datagram socket connection.

setSoTimeout

public void setSoTimeout(int timeout)
            throws SocketException
Set the timeout in milliseconds of a currently open connection. Only call this method after a connection has been opened by open().

Parameters:
timeout - The timeout in milliseconds to use for the currently open datagram socket connection.