org.apache.commons.net.telnet

## Class Telnet

- java.lang.Object
- - org.apache.commons.net.SocketClient
  - - org.apache.commons.net.telnet.Telnet

- Direct Known Subclasses:
    TelnetClient

      class Telnet
      extends SocketClient

  Telnet implementation class that provides core Telnet protocol functionality. This class handles the low-level Telnet protocol operations including option negotiation and command processing.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `(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 boolean` | `debug`
    `(package private) static boolean` | `debugoptions`
    `(package private) static int` | `DEFAULT_PORT`
    `(package private) static int` | `DO_MASK`
    `(package private) static char` | `NUL`
    `(package private) static int` | `REQUESTED_DO_MASK`
    `(package private) static int` | `REQUESTED_WILL_MASK`
    `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)
    `(package private) static int` | `WILL_MASK`

    - ### Fields inherited from class org.apache.commons.net.SocketClient

      `_defaultPort_, _hostname_, _input_, _output_, _serverSocketFactory_, _socket_, _socketFactory_, _timeout_, connectTimeout, NETASCII_EOL, remoteInetSocketAddress`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Telnet()` Empty Constructor
    `Telnet(String termtype)` This constructor lets you specify the terminal type.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `_connectAction_()` Called upon connection.
    `(package private) void` | `_registerSpyStream(OutputStream spystream)` Registers an OutputStream for spying what's going on in the Telnet session.
    `(package private) boolean` | `_sendAYT(java.time.Duration timeout)` Sends an `Are You There (AYT)` sequence and waits for the result.
    `(package private) void` | `_sendCommand(byte cmd)` Sends a command, automatically adds IAC prefix and flushes the output.
    `(package private) void` | `_sendSubnegotiation(int[] subn)` Manages subnegotiation for Terminal Type.
    `(package private) void` | `_stopSpyStream()` Stops spying this Telnet.
    `(package private) void` | `addOptionHandler(TelnetOptionHandler opthand)` Registers a new TelnetOptionHandler for this Telnet to use.
    `(package private) void` | `deleteOptionHandler(int optcode)` Unregisters a TelnetOptionHandler.
    `(package private) void` | `processAYTResponse()` Processes the response of an AYT
    `(package private) void` | `processCommand(int command)` Processes a COMMAND.
    `(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.
    `void` | `registerNotifHandler(TelnetNotificationHandler notifhand)` Registers a notification handler to which will be sent notifications of received Telnet option negotiation commands.
    `(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) 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` | `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.
    `void` | `unregisterNotifHandler()` Unregisters the current notification handler.

    - ### Methods inherited from class org.apache.commons.net.SocketClient

      `addProtocolCommandListener, applySocketAttributes, checkOpenOutputStream, connect, connect, connect, connect, connect, connect, createCommandSupport, disconnect, fireCommandSent, fireReplyReceived, getCharset, getCommandSupport, getConnectTimeout, getDefaultPort, getDefaultTimeout, getHostAddress, getHostAddress, getKeepAlive, getLocalAddress, getLocalPort, getProxy, getReceiveBufferSize, getRemoteAddress, getRemoteInetSocketAddress, getRemotePort, getSendBufferSize, getServerSocketFactory, getSoLinger, getSoTimeout, getTcpNoDelay, isAvailable, isConnected, removeProtocolCommandListener, setCharset, setConnectTimeout, setDefaultPort, setDefaultTimeout, setKeepAlive, setProxy, setReceiveBufferSize, setSendBufferSize, setServerSocketFactory, 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

    - #### COMMAND_AYT

          static final byte[] COMMAND_AYT

      AYT sequence

    - #### COMMAND_DO

          static final byte[] COMMAND_DO

    - #### COMMAND_DONT

          static final byte[] COMMAND_DONT

    - #### COMMAND_IS

          static final byte[] COMMAND_IS

      Is sequence (for subnegotiation)

    - #### COMMAND_SB

          static final byte[] COMMAND_SB

    - #### COMMAND_SE

          static final byte[] COMMAND_SE

    - #### COMMAND_WILL

          static final byte[] COMMAND_WILL

    - #### COMMAND_WONT

          static final byte[] COMMAND_WONT

    - #### debug

          static final boolean debug

      See Also:
        Constant Field Values

    - #### debugoptions

          static final boolean debugoptions

      See Also:
        Constant Field Values

    - #### DEFAULT_PORT

          static final int DEFAULT_PORT

      See Also:
        Constant Field Values

    - #### DO_MASK

          static final int DO_MASK

      See Also:
        Constant Field Values

    - #### NUL

          static final char NUL

      See Also:
        Constant Field Values

    - #### REQUESTED_DO_MASK

          static final int REQUESTED_DO_MASK

      See Also:
        Constant Field Values

    - #### REQUESTED_WILL_MASK

          static final int REQUESTED_WILL_MASK

      See Also:
        Constant Field Values

    - #### TERMINAL_TYPE

          protected static final int TERMINAL_TYPE

      Terminal type option
      See Also:
        Constant Field Values

    - #### TERMINAL_TYPE_IS

          protected static final int TERMINAL_TYPE_IS

      Is (for subnegotiation)
      See Also:
        Constant Field Values

    - #### TERMINAL_TYPE_SEND

          protected static final int TERMINAL_TYPE_SEND

      Send (for subnegotiation)
      See Also:
        Constant Field Values

    - #### WILL_MASK

          static final int WILL_MASK

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Telnet

          Telnet()

      Empty Constructor

    - #### Telnet

          Telnet(String termtype)

      This constructor lets you specify the terminal type.
      Parameters:
        `termtype` - terminal type to be negotiated (ej. VT100)

  - ### Method Detail

    - #### _connectAction_

          protected void _connectAction_()
                                  throws IOException

      Called upon connection.
      Overrides:
        `_connectAction_` in class `SocketClient`
      Throws:
        `IOException` - - Exception in I/O.

    - #### _registerSpyStream

          void _registerSpyStream(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.

    - #### _sendAYT

          final boolean _sendAYT(java.time.Duration timeout)
                          throws IOException,
                                 IllegalArgumentException,
                                 InterruptedException

      Sends an `Are You There (AYT)` sequence and waits for the result.
      Parameters:
        `timeout` - Time to wait for a response.
      Returns:
        true if AYT received a response, false otherwise
      Throws:
        `IOException` - - Exception in I/O.
        `IllegalArgumentException` - - Illegal argument
        `InterruptedException` - - Interrupted during wait.

    - #### _sendCommand

          final void _sendCommand(byte cmd)
                           throws IOException

      Sends a command, automatically adds IAC prefix and flushes the output.
      Parameters:
        `cmd` - command data to be sent
      Throws:
        `IOException` - - Exception in I/O.

    - #### _sendSubnegotiation

          final void _sendSubnegotiation(int[] subn)
                                  throws IOException

      Manages subnegotiation for Terminal Type.
      Parameters:
        `subn` - subnegotiation data to be sent
      Throws:
        `IOException` - - Exception in I/O.

    - #### _stopSpyStream

          void _stopSpyStream()

      Stops spying this Telnet.

    - #### addOptionHandler

          void addOptionHandler(TelnetOptionHandler opthand)
                         throws InvalidTelnetOptionException,
                                IOException

      Registers a new TelnetOptionHandler for this Telnet to use.
      Parameters:
        `opthand` - option handler to be registered.
      Throws:
        `InvalidTelnetOptionException` - - The option code is invalid.
        `IOException` - on error

    - #### deleteOptionHandler

          void deleteOptionHandler(int optcode)
                            throws InvalidTelnetOptionException,
                                   IOException

      Unregisters a TelnetOptionHandler.
      Parameters:
        `optcode` - Code of the option to be unregistered.
      Throws:
        `InvalidTelnetOptionException` - - The option code is invalid.
        `IOException` - on error

    - #### processAYTResponse

          final void processAYTResponse()

      Processes the response of an AYT

    - #### processCommand

          void processCommand(int command)

      Processes a COMMAND.
      Parameters:
        `command` - option code to be set.

    - #### processDo

          void processDo(int option)
                  throws IOException

      Processes a `DO` request.
      Parameters:
        `option` - option code to be set.
      Throws:
        `IOException` - - Exception in I/O.

    - #### processDont

          void processDont(int option)
                    throws IOException

      Processes a `DONT` request.
      Parameters:
        `option` - option code to be set.
      Throws:
        `IOException` - - Exception in I/O.

    - #### processSuboption

          void processSuboption(int[] suboption,
                                int suboptionLength)
                         throws IOException

      Processes a suboption negotiation.
      Parameters:
        `suboption` - subnegotiation data received
        `suboptionLength` - length of data received
      Throws:
        `IOException` - - Exception in I/O.

    - #### processWill

          void processWill(int option)
                    throws IOException

      Processes a `WILL` request.
      Parameters:
        `option` - option code to be set.
      Throws:
        `IOException` - - Exception in I/O.

    - #### processWont

          void processWont(int option)
                    throws IOException

      Processes a `WONT` request.
      Parameters:
        `option` - option code to be set.
      Throws:
        `IOException` - - Exception in I/O.

    - #### registerNotifHandler

          public void registerNotifHandler(TelnetNotificationHandler notifhand)

      Registers a notification handler to which will be sent notifications of received Telnet option negotiation commands.
      Parameters:
        `notifhand` - TelnetNotificationHandler to be registered

    - #### requestDo

          final void requestDo(int option)
                        throws IOException

      Requests a DO.
      Parameters:
        `option` - Option code.
      Throws:
        `IOException` - - Exception in I/O.

    - #### requestDont

          final void requestDont(int option)
                          throws IOException

      Requests a `DONT`.
      Parameters:
        `option` - Option code.
      Throws:
        `IOException` - - Exception in I/O.

    - #### requestedDo

          boolean requestedDo(int option)

      Looks for the state of the option.
      Parameters:
        `option` - option code to be looked up.
      Returns:
        true if a `DO` has been requested.

    - #### requestedDont

          boolean requestedDont(int option)

      Looks for the state of the option.
      Parameters:
        `option` - option code to be looked up.
      Returns:
        true if a `DONT` has been requested

    - #### requestedWill

          boolean requestedWill(int option)

      Looks for the state of the option.
      Parameters:
        `option` - option code to be looked up.
      Returns:
        true if a `WILL` has been requested

    - #### requestedWont

          boolean requestedWont(int option)

      Looks for the state of the option.
      Parameters:
        `option` - option code to be looked up.
      Returns:
        true if a `WONT` has been requested

    - #### requestWill

          final void requestWill(int option)
                          throws IOException

      Requests a `WILL`.
      Parameters:
        `option` - Option code.
      Throws:
        `IOException` - - Exception in I/O.

    - #### requestWont

          final void requestWont(int option)
                          throws IOException

      Requests a `WONT`.
      Parameters:
        `option` - Option code.
      Throws:
        `IOException` - - Exception in I/O.

    - #### sendByte

          final void sendByte(int b)
                       throws IOException

      Sends a byte.
      Parameters:
        `b` - byte to send
      Throws:
        `IOException` - - Exception in I/O.

    - #### sendDo

          final void sendDo(int option)
                     throws IOException

      Sends a `DO`.
      Parameters:
        `option` - Option code.
      Throws:
        `IOException` - - Exception in I/O.

    - #### sendDont

          final void sendDont(int option)
                       throws IOException

      Sends a `DONT`.
      Parameters:
        `option` - Option code.
      Throws:
        `IOException` - - Exception in I/O.

    - #### sendTerminalType

          final void sendTerminalType()
                               throws IOException

      Sends terminal type information.
      Throws:
        `IOException` - - Exception in I/O.

    - #### sendWill

          final void sendWill(int option)
                       throws IOException

      Sends a `WILL`.
      Parameters:
        `option` - Option code.
      Throws:
        `IOException` - - Exception in I/O.

    - #### sendWont

          final void sendWont(int option)
                       throws IOException

      Sends a `WONT`.
      Parameters:
        `option` - Option code.
      Throws:
        `IOException` - - Exception in I/O.

    - #### setDo

          void setDo(int option)
              throws IOException

      Sets the state of the option.
      Parameters:
        `option` - option code to be set.
      Throws:
        `IOException`

    - #### setDont

          void setDont(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.

    - #### setWantDont

          void setWantDont(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.

    - #### setWantWont

          void setWantWont(int option)

      Sets the state of the option.
      Parameters:
        `option` - option code to be set.

    - #### setWill

          void setWill(int option)
                throws IOException

      Sets the state of the option.
      Parameters:
        `option` - option code to be set.
      Throws:
        `IOException`

    - #### setWont

          void setWont(int option)

      Sets the state of the option.
      Parameters:
        `option` - option code to be set.

    - #### 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

    - #### stateIsDo

          boolean stateIsDo(int option)

      Looks for the state of the option.
      Parameters:
        `option` - option code to be looked up.
      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:
        true if a `DONT` has been acknowledged

    - #### stateIsWill

          boolean stateIsWill(int option)

      Looks for the state of the option.
      Parameters:
        `option` - option code to be looked up.
      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:
        true if a `WONT` has been acknowledged

    - #### unregisterNotifHandler

          public void unregisterNotifHandler()

      Unregisters the current notification handler.