org.apache.commons.net.telnet
Class TelnetClient

java.lang.Object
  extended byorg.apache.commons.net.SocketClient
      extended byorg.apache.commons.net.telnet.Telnet
          extended byorg.apache.commons.net.telnet.TelnetClient
Direct Known Subclasses:
FTP

public class TelnetClient
extends Telnet

The TelnetClient class implements the simple network virtual terminal (NVT) for the Telnet protocol according to RFC 854. It does not implement any of the extra Telnet options because it is meant to be used within a Java program providing automated access to Telnet accessible resources.

The class can be used by first connecting to a server using the SocketClient connect method. Then an InputStream and OutputStream for sending and receiving data over the Telnet connection can be obtained by using the getInputStream() and getOutputStream() methods. When you finish using the streams, you must call disconnect rather than simply closing the streams.

Author:
Daniel F. Savarese, Bruno D'Avanzo

Field Summary
private  java.io.InputStream __input
           
private  java.io.OutputStream __output
           
(package private) static byte[] _COMMAND_AYT
          AYT sequence
(package private) static byte[] _COMMAND_DO
           
(package private) static byte[] _COMMAND_DONT
           
(package private) static byte[] _COMMAND_IS
          Is sequence (for subnegotiation)
(package private) static byte[] _COMMAND_SB
           
(package private) static byte[] _COMMAND_SE
           
(package private) static byte[] _COMMAND_WILL
           
(package private) static byte[] _COMMAND_WONT
           
(package private) static int _DO_MASK
           
(package private)  int[] _doResponse
           
(package private)  int[] _options
           
(package private) static int _REQUESTED_DO_MASK
           
(package private) static int _REQUESTED_WILL_MASK
           
(package private) static int _WILL_MASK
           
(package private)  int[] _willResponse
           
(package private) static boolean debug
           
(package private) static boolean debugoptions
           
(package private) static int DEFAULT_PORT
           
protected  boolean readerThread
           
protected static int TERMINAL_TYPE
          Terminal type option
protected static int TERMINAL_TYPE_IS
          Is (for subnegotiation)
protected static int TERMINAL_TYPE_SEND
          Send (for subnegotiation)
 
Fields inherited from class org.apache.commons.net.SocketClient
_defaultPort_, _input_, _isConnected_, _output_, _socket_, _socketFactory_, _timeout_, NETASCII_EOL
 
Constructor Summary
TelnetClient()
          Default TelnetClient constructor.
TelnetClient(java.lang.String termtype)
           
 
Method Summary
(package private)  void _closeOutputStream()
           
protected  void _connectAction_()
          Handles special connection requirements.
(package private)  void _flushOutputStream()
           
(package private)  void _processAYTResponse()
          Processes the response of an AYT
(package private)  void _processDo(int option)
          Processes a DO request.
(package private)  void _processDont(int option)
          Processes a DONT request.
(package private)  void _processSuboption(int[] suboption, int suboptionLength)
          Processes a suboption negotiation.
(package private)  void _processWill(int option)
          Processes a WILL request.
(package private)  void _processWont(int option)
          Processes a WONT request.
(package private)  void _registerSpyStream(java.io.OutputStream spystream)
          Registers an OutputStream for spying what's going on in the Telnet session.
(package private)  void _requestDo(int option)
          Requests a DO.
(package private)  void _requestDont(int option)
          Requests a DONT.
(package private)  boolean _requestedDo(int option)
          Looks for the state of the option.
(package private)  boolean _requestedDont(int option)
          Looks for the state of the option.
(package private)  boolean _requestedWill(int option)
          Looks for the state of the option.
(package private)  boolean _requestedWont(int option)
          Looks for the state of the option.
(package private)  void _requestWill(int option)
          Requests a WILL.
(package private)  void _requestWont(int option)
          Requests a WONT.
(package private)  boolean _sendAYT(long timeout)
          Sends an Are You There sequence and waits for the result.
(package private)  void _sendByte(int b)
          Sends a byte.
(package private)  void _sendDo(int option)
          Sends a DO.
(package private)  void _sendDont(int option)
          Sends a DONT.
(package private)  void _sendSubnegotiation(int[] subn)
          Manages subnegotiation for Terminal Type.
(package private)  void _sendTerminalType()
          Sends terminal type information.
(package private)  void _sendWill(int option)
          Sends a WILL.
(package private)  void _sendWont(int option)
          Sends a WONT.
(package private)  void _setDo(int option)
          Sets the state of the option.
(package private)  void _setDont(int option)
          Sets the state of the option.
(package private)  void _setWantDo(int option)
          Sets the state of the option.
(package private)  void _setWantDont(int option)
          Sets the state of the option.
(package private)  void _setWantWill(int option)
          Sets the state of the option.
(package private)  void _setWantWont(int option)
          Sets the state of the option.
(package private)  void _setWill(int option)
          Sets the state of the option.
(package private)  void _setWont(int option)
          Sets the state of the option.
(package private)  void _spyRead(int ch)
          Sends a read char on the spy stream.
(package private)  void _spyWrite(int ch)
          Sends a written char on the spy stream.
(package private)  boolean _stateIsDo(int option)
          Looks for the state of the option.
(package private)  boolean _stateIsDont(int option)
          Looks for the state of the option.
(package private)  boolean _stateIsWill(int option)
          Looks for the state of the option.
(package private)  boolean _stateIsWont(int option)
          Looks for the state of the option.
(package private)  void _stopSpyStream()
          Stops spying this Telnet.
 void addOptionHandler(TelnetOptionHandler opthand)
          Registers a new TelnetOptionHandler for this telnet client to use.
 void deleteOptionHandler(int optcode)
          Unregisters a TelnetOptionHandler.
 void disconnect()
          Disconnects the telnet session, closing the input and output streams as well as the socket.
 java.io.InputStream getInputStream()
          Returns the telnet connection input stream.
 boolean getLocalOptionState(int option)
          Returns the state of the option on the local side.
 java.io.OutputStream getOutputStream()
          Returns the telnet connection output stream.
 boolean getReaderThread()
          Gets the status of the reader thread.
 boolean getRemoteOptionState(int option)
          Returns the state of the option on the remote side.
 void registerNotifHandler(TelnetNotificationHandler notifhand)
          Registers a notification handler to which will be sent notifications of received telnet option negotiation commands.
 void registerSpyStream(java.io.OutputStream spystream)
          Registers an OutputStream for spying what's going on in the TelnetClient session.
 boolean sendAYT(long timeout)
          Sends an Are You There sequence and waits for the result.
 void setReaderThread(boolean flag)
          Sets the status of the reader thread.
 void stopSpyStream()
          Stops spying this TelnetClient.
 void unregisterNotifHandler()
          Unregisters the current notification handler.
 
Methods inherited from class org.apache.commons.net.SocketClient
connect, connect, connect, connect, connect, connect, getDefaultPort, getDefaultTimeout, getLocalAddress, getLocalPort, getRemoteAddress, getRemotePort, getSoLinger, getSoTimeout, getTcpNoDelay, isConnected, setDefaultPort, setDefaultTimeout, setSocketFactory, setSoLinger, setSoTimeout, setTcpNoDelay, verifyRemote
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

__input

private java.io.InputStream __input

__output

private java.io.OutputStream __output

readerThread

protected boolean readerThread

debug

static final boolean debug
See Also:
Constant Field Values

debugoptions

static final boolean debugoptions
See Also:
Constant Field Values

_COMMAND_DO

static final byte[] _COMMAND_DO

_COMMAND_DONT

static final byte[] _COMMAND_DONT

_COMMAND_WILL

static final byte[] _COMMAND_WILL

_COMMAND_WONT

static final byte[] _COMMAND_WONT

_COMMAND_SB

static final byte[] _COMMAND_SB

_COMMAND_SE

static final byte[] _COMMAND_SE

_WILL_MASK

static final int _WILL_MASK
See Also:
Constant Field Values

_DO_MASK

static final int _DO_MASK
See Also:
Constant Field Values

_REQUESTED_WILL_MASK

static final int _REQUESTED_WILL_MASK
See Also:
Constant Field Values

_REQUESTED_DO_MASK

static final int _REQUESTED_DO_MASK
See Also:
Constant Field Values

DEFAULT_PORT

static final int DEFAULT_PORT
See Also:
Constant Field Values

_doResponse

int[] _doResponse

_willResponse

int[] _willResponse

_options

int[] _options

TERMINAL_TYPE

protected static final int TERMINAL_TYPE
Terminal type option

See Also:
Constant Field Values

TERMINAL_TYPE_SEND

protected static final int TERMINAL_TYPE_SEND
Send (for subnegotiation)

See Also:
Constant Field Values

TERMINAL_TYPE_IS

protected static final int TERMINAL_TYPE_IS
Is (for subnegotiation)

See Also:
Constant Field Values

_COMMAND_IS

static final byte[] _COMMAND_IS
Is sequence (for subnegotiation)


_COMMAND_AYT

static final byte[] _COMMAND_AYT
AYT sequence

Constructor Detail

TelnetClient

public TelnetClient()
Default TelnetClient constructor.


TelnetClient

public TelnetClient(java.lang.String termtype)
Method Detail

_flushOutputStream

void _flushOutputStream()
                  throws java.io.IOException
Throws:
java.io.IOException

_closeOutputStream

void _closeOutputStream()
                  throws java.io.IOException
Throws:
java.io.IOException

_connectAction_

protected void _connectAction_()
                        throws java.io.IOException
Handles special connection requirements.

Overrides:
_connectAction_ in class Telnet
Throws:
java.io.IOException - If an error occurs during connection setup.

disconnect

public void disconnect()
                throws java.io.IOException
Disconnects the telnet session, closing the input and output streams as well as the socket. If you have references to the input and output streams of the telnet connection, you should not close them yourself, but rather call disconnect to properly close the connection.

Overrides:
disconnect in class SocketClient
Throws:
java.io.IOException - If there is an error closing the socket.

getOutputStream

public java.io.OutputStream getOutputStream()
Returns the telnet connection output stream. You should not close the stream when you finish with it. Rather, you should call disconnect .

Returns:
The telnet connection output stream.

getInputStream

public java.io.InputStream getInputStream()
Returns the telnet connection input stream. You should not close the stream when you finish with it. Rather, you should call disconnect .

Returns:
The telnet connection input stream.

getLocalOptionState

public boolean getLocalOptionState(int option)
Returns the state of the option on the local side.

Parameters:
option - - Option to be checked.

Returns:
The state of the option on the local side.

getRemoteOptionState

public boolean getRemoteOptionState(int option)
Returns the state of the option on the remote side.

Parameters:
option - - Option to be checked.

Returns:
The state of the option on the remote side.

sendAYT

public boolean sendAYT(long timeout)
                throws java.io.IOException,
                       java.lang.IllegalArgumentException,
                       java.lang.InterruptedException
Sends an Are You There sequence and waits for the result.

Parameters:
timeout - - Time to wait for a response (millis.)

Returns:
true if AYT received a response, false otherwise
Throws:
java.lang.InterruptedException
java.lang.IllegalArgumentException
java.io.IOException -


addOptionHandler

public void addOptionHandler(TelnetOptionHandler opthand)
                      throws InvalidTelnetOptionException
Registers a new TelnetOptionHandler for this telnet client to use.

Overrides:
addOptionHandler in class Telnet
Parameters:
opthand - - option handler to be registered.
Throws:
InvalidTelnetOptionException -


deleteOptionHandler

public void deleteOptionHandler(int optcode)
                         throws InvalidTelnetOptionException
Unregisters a TelnetOptionHandler.

Overrides:
deleteOptionHandler in class Telnet
Parameters:
optcode - - Code of the option to be unregistered.
Throws:
InvalidTelnetOptionException -


registerSpyStream

public void registerSpyStream(java.io.OutputStream spystream)
Registers an OutputStream for spying what's going on in the TelnetClient session.

Parameters:
spystream - - OutputStream on which session activity will be echoed.

stopSpyStream

public void stopSpyStream()
Stops spying this TelnetClient.


registerNotifHandler

public void registerNotifHandler(TelnetNotificationHandler notifhand)
Registers a notification handler to which will be sent notifications of received telnet option negotiation commands.

Overrides:
registerNotifHandler in class Telnet
Parameters:
notifhand - - TelnetNotificationHandler to be registered

unregisterNotifHandler

public void unregisterNotifHandler()
Unregisters the current notification handler.

Overrides:
unregisterNotifHandler in class Telnet

setReaderThread

public void setReaderThread(boolean flag)
Sets the status of the reader thread. The reader thread status will apply to all subsequent connections

Parameters:
flag - - true switches the reader thread on, false switches it off

getReaderThread

public boolean getReaderThread()
Gets the status of the reader thread.

Returns:
true if the reader thread is on, false otherwise

_stateIsWill

boolean _stateIsWill(int option)
Looks for the state of the option.

Parameters:
option - - option code to be looked up.
Returns:
returns true if a will has been acknowledged


_stateIsWont

boolean _stateIsWont(int option)
Looks for the state of the option.

Parameters:
option - - option code to be looked up.
Returns:
returns true if a wont has been acknowledged


_stateIsDo

boolean _stateIsDo(int option)
Looks for the state of the option.

Parameters:
option - - option code to be looked up.
Returns:
returns true if a do has been acknowledged


_stateIsDont

boolean _stateIsDont(int option)
Looks for the state of the option.

Parameters:
option - - option code to be looked up.
Returns:
returns true if a dont has been acknowledged


_requestedWill

boolean _requestedWill(int option)
Looks for the state of the option.

Parameters:
option - - option code to be looked up.
Returns:
returns true if a will has been reuqested


_requestedWont

boolean _requestedWont(int option)
Looks for the state of the option.

Parameters:
option - - option code to be looked up.
Returns:
returns true if a wont has been reuqested


_requestedDo

boolean _requestedDo(int option)
Looks for the state of the option.

Parameters:
option - - option code to be looked up.
Returns:
returns true if a do has been reuqested


_requestedDont

boolean _requestedDont(int option)
Looks for the state of the option.

Parameters:
option - - option code to be looked up.
Returns:
returns true if a dont has been reuqested


_setWill

void _setWill(int option)
Sets the state of the option.

Parameters:
option - - option code to be set.

_setDo

void _setDo(int option)
Sets the state of the option.

Parameters:
option - - option code to be set.

_setWantWill

void _setWantWill(int option)
Sets the state of the option.

Parameters:
option - - option code to be set.

_setWantDo

void _setWantDo(int option)
Sets the state of the option.

Parameters:
option - - option code to be set.

_setWont

void _setWont(int option)
Sets the state of the option.

Parameters:
option - - option code to be set.

_setDont

void _setDont(int option)
Sets the state of the option.

Parameters:
option - - option code to be set.

_setWantWont

void _setWantWont(int option)
Sets the state of the option.

Parameters:
option - - option code to be set.

_setWantDont

void _setWantDont(int option)
Sets the state of the option.

Parameters:
option - - option code to be set.

_processDo

void _processDo(int option)
          throws java.io.IOException
Processes a DO request.

Parameters:
option - - option code to be set.
Throws:
java.io.IOException - - Exception in I/O.


_processDont

void _processDont(int option)
            throws java.io.IOException
Processes a DONT request.

Parameters:
option - - option code to be set.
Throws:
java.io.IOException - - Exception in I/O.


_processWill

void _processWill(int option)
            throws java.io.IOException
Processes a WILL request.

Parameters:
option - - option code to be set.
Throws:
java.io.IOException - - Exception in I/O.


_processWont

void _processWont(int option)
            throws java.io.IOException
Processes a WONT request.

Parameters:
option - - option code to be set.
Throws:
java.io.IOException - - Exception in I/O.


_processSuboption

void _processSuboption(int[] suboption,
                       int suboptionLength)
                 throws java.io.IOException
Processes a suboption negotiation.

Parameters:
suboption - - subnegotiation data received
suboptionLength - - length of data received
Throws:
java.io.IOException - - Exception in I/O.


_sendTerminalType

final void _sendTerminalType()
                      throws java.io.IOException
Sends terminal type information.

Throws:
java.io.IOException - - Exception in I/O.

_sendSubnegotiation

final void _sendSubnegotiation(int[] subn)
                        throws java.io.IOException
Manages subnegotiation for Terminal Type.

Parameters:
subn - - subnegotiation data to be sent
Throws:
java.io.IOException - - Exception in I/O.


_processAYTResponse

final void _processAYTResponse()
Processes the response of an AYT


_sendDo

final void _sendDo(int option)
            throws java.io.IOException
Sends a DO.

Parameters:
option - - Option code.
Throws:
java.io.IOException - - Exception in I/O.


_requestDo

final void _requestDo(int option)
               throws java.io.IOException
Requests a DO.

Parameters:
option - - Option code.
Throws:
java.io.IOException - - Exception in I/O.


_sendDont

final void _sendDont(int option)
              throws java.io.IOException
Sends a DONT.

Parameters:
option - - Option code.
Throws:
java.io.IOException - - Exception in I/O.


_requestDont

final void _requestDont(int option)
                 throws java.io.IOException
Requests a DONT.

Parameters:
option - - Option code.
Throws:
java.io.IOException - - Exception in I/O.


_sendWill

final void _sendWill(int option)
              throws java.io.IOException
Sends a WILL.

Parameters:
option - - Option code.
Throws:
java.io.IOException - - Exception in I/O.


_requestWill

final void _requestWill(int option)
                 throws java.io.IOException
Requests a WILL.

Parameters:
option - - Option code.
Throws:
java.io.IOException - - Exception in I/O.


_sendWont

final void _sendWont(int option)
              throws java.io.IOException
Sends a WONT.

Parameters:
option - - Option code.
Throws:
java.io.IOException - - Exception in I/O.


_requestWont

final void _requestWont(int option)
                 throws java.io.IOException
Requests a WONT.

Parameters:
option - - Option code.
Throws:
java.io.IOException - - Exception in I/O.


_sendByte

final void _sendByte(int b)
              throws java.io.IOException
Sends a byte.

Parameters:
b - - byte to send
Throws:
java.io.IOException - - Exception in I/O.


_sendAYT

final boolean _sendAYT(long timeout)
                throws java.io.IOException,
                       java.lang.IllegalArgumentException,
                       java.lang.InterruptedException
Sends an Are You There sequence and waits for the result.

Parameters:
timeout - - Time to wait for a response (millis.)

Returns:
true if AYT received a response, false otherwise
Throws:
java.io.IOException - - Exception in I/O.
java.lang.IllegalArgumentException - - Illegal argument
java.lang.InterruptedException - - Interrupted during wait.


_registerSpyStream

void _registerSpyStream(java.io.OutputStream spystream)
Registers an OutputStream for spying what's going on in the Telnet session.

Parameters:
spystream - - OutputStream on which session activity will be echoed.

_stopSpyStream

void _stopSpyStream()
Stops spying this Telnet.


_spyRead

void _spyRead(int ch)
Sends a read char on the spy stream.

Parameters:
ch - - character read from the session

_spyWrite

void _spyWrite(int ch)
Sends a written char on the spy stream.

Parameters:
ch - - character written to the session