public class TelnetClient extends Telnet
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.
| Modifier and Type | Field and Description |
|---|---|
(package private) int |
maxSubnegotiationLength
the size of the subnegotiation buffer.
|
protected boolean |
readerThread
Whether to enable the reader thread.
|
COMMAND_AYT, COMMAND_DO, COMMAND_DONT, COMMAND_IS, COMMAND_SB, COMMAND_SE, COMMAND_WILL, COMMAND_WONT, debug, debugoptions, DEFAULT_PORT, DO_MASK, NUL, REQUESTED_DO_MASK, REQUESTED_WILL_MASK, TERMINAL_TYPE, TERMINAL_TYPE_IS, TERMINAL_TYPE_SEND, WILL_MASK_defaultPort_, _hostname_, _input_, _output_, _serverSocketFactory_, _socket_, _socketFactory_, _timeout_, connectTimeout, NETASCII_EOL, remoteInetSocketAddress| Constructor and Description |
|---|
TelnetClient()
Default TelnetClient constructor, sets terminal-type
VT100. |
TelnetClient(int maxSubnegotiationLength)
Constructs an instance with the specified max subnegotiation length and the default terminal-type
VT100. |
TelnetClient(String termtype)
Constructs an instance with the specified terminal type.
|
TelnetClient(String termType,
int maxSubnegotiationLength)
Constructs an instance with the specified terminal type and max subnegotiation length
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
_connectAction_()
Handles special connection requirements.
|
void |
addOptionHandler(TelnetOptionHandler opthand)
Registers a new TelnetOptionHandler for this Telnet client to use.
|
(package private) void |
closeOutputStream() |
void |
deleteOptionHandler(int optcode)
Unregisters a TelnetOptionHandler.
|
void |
disconnect()
Disconnects the Telnet session, closing the input and output streams as well as the socket.
|
(package private) void |
flushOutputStream() |
InputStream |
getInputStream()
Gets the Telnet connection input stream.
|
boolean |
getLocalOptionState(int option)
Gets the state of the option on the local side.
|
OutputStream |
getOutputStream()
Gets the Telnet connection output stream.
|
boolean |
getReaderThread()
Gets the status of the reader thread.
|
boolean |
getRemoteOptionState(int option)
Gets the state of the option on the remote side.
|
(package private) void |
notifyInputListener() |
void |
registerInputListener(TelnetInputListener listener)
Register a listener to be notified when new incoming data is available to be read on the
input stream. |
void |
registerSpyStream(OutputStream spystream)
Registers an OutputStream for spying what's going on in the TelnetClient session.
|
boolean |
sendAYT(java.time.Duration timeout)
Sends an
Are You There (AYT) sequence and waits for the result. |
void |
sendCommand(byte command)
Sends a command byte to the remote peer, adding the IAC prefix.
|
void |
sendSubnegotiation(int[] message)
Sends a protocol-specific subnegotiation message to the remote peer.
|
void |
setReaderThread(boolean readerThread)
Sets the status of the reader thread.
|
void |
stopSpyStream()
Stops spying this TelnetClient.
|
void |
unregisterInputListener()
Unregisters the current
TelnetInputListener, if any. |
_registerSpyStream, _sendAYT, _sendCommand, _sendSubnegotiation, _stopSpyStream, processAYTResponse, processCommand, processDo, processDont, processSuboption, processWill, processWont, registerNotifHandler, requestDo, requestDont, requestedDo, requestedDont, requestedWill, requestedWont, requestWill, requestWont, sendByte, sendDo, sendDont, sendTerminalType, sendWill, sendWont, setDo, setDont, setWantDo, setWantDont, setWantWill, setWantWont, setWill, setWont, spyRead, spyWrite, stateIsDo, stateIsDont, stateIsWill, stateIsWont, unregisterNotifHandleraddProtocolCommandListener, applySocketAttributes, checkOpenOutputStream, connect, connect, connect, connect, connect, connect, createCommandSupport, 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, verifyRemotefinal int maxSubnegotiationLength
protected boolean readerThread
public TelnetClient()
VT100.public TelnetClient(int maxSubnegotiationLength)
VT100.maxSubnegotiationLength - the size of the subnegotiation buffer.public TelnetClient(String termtype)
termtype - the terminal type to use, e.g. VT100public TelnetClient(String termType, int maxSubnegotiationLength)
termType - the terminal type to use, e.g. VT100maxSubnegotiationLength - the size of the subnegotiation bufferprotected void _connectAction_()
throws IOException
_connectAction_ in class TelnetIOException - If an error occurs during connection setup.public void addOptionHandler(TelnetOptionHandler opthand) throws InvalidTelnetOptionException, IOException
addOptionHandler in class Telnetopthand - option handler to be registered.InvalidTelnetOptionException - on errorIOException - on errorvoid closeOutputStream()
throws IOException
IOExceptionpublic void deleteOptionHandler(int optcode)
throws InvalidTelnetOptionException,
IOException
deleteOptionHandler in class Telnetoptcode - Code of the option to be unregistered.InvalidTelnetOptionException - on errorIOException - on errorpublic void disconnect()
throws IOException
disconnect in class SocketClientIOException - not thrown, subclasses may throw.void flushOutputStream()
throws IOException
IOExceptionpublic InputStream getInputStream()
disconnect .public boolean getLocalOptionState(int option)
option - Option to be checked.public OutputStream getOutputStream()
disconnect .public boolean getReaderThread()
public boolean getRemoteOptionState(int option)
option - Option to be checked.void notifyInputListener()
public void registerInputListener(TelnetInputListener listener)
input stream. Only one listener is
supported at a time.
More precisely, notifications are issued whenever the number of bytes available for immediate reading (i.e., the value returned by
InputStream.available()) transitions from zero to non-zero. Note that (in general) multiple reads may be required to empty the buffer and reset
this notification, because incoming bytes are being added to the internal buffer asynchronously.
Notifications are only supported when a reader thread is enabled for the connection.
listener - listener to be registered, replaces any previous listener.public void registerSpyStream(OutputStream spystream)
spystream - OutputStream on which session activity will be echoed.public boolean sendAYT(java.time.Duration timeout)
throws IOException,
IllegalArgumentException,
InterruptedException
Are You There (AYT) sequence and waits for the result.timeout - Time to wait for a response.InterruptedException - on errorIllegalArgumentException - on errorIOException - on errorpublic void sendCommand(byte command)
throws IOException,
IllegalArgumentException
This method does not wait for any response. Messages sent by the remote end can be handled by registering an approrpriate TelnetOptionHandler.
command - the code for the commandIOException - if an I/O error occurs while writing the messageIllegalArgumentException - on errorpublic void sendSubnegotiation(int[] message)
throws IOException,
IllegalArgumentException
TelnetClient will add the IAC SB & IAC SE framing bytes; the first byte
in message should be the appropriate Telnet option code.
This method does not wait for any response. Subnegotiation messages sent by the remote end can be handled by registering an approrpriate
TelnetOptionHandler.
message - option code followed by subnegotiation payloadIllegalArgumentException - if message has length zeroIOException - if an I/O error occurs while writing the messagepublic void setReaderThread(boolean readerThread)
When enabled, a seaparate internal reader thread is created for new connections to read incoming data as it arrives. This results in immediate handling
of option negotiation, notifications, etc. (at least until the fixed-size internal buffer fills up). Otherwise, no thread is created an all negotiation
and option handling is deferred until a read() is performed on the input stream.
The reader thread must be enabled for TelnetInputListener support.
When this method is invoked, the reader thread status will apply to all subsequent connections; the current connection (if any) is not affected.
readerThread - true to enable the reader thread, false to disable.registerInputListener(org.apache.commons.net.telnet.TelnetInputListener)public void stopSpyStream()
public void unregisterInputListener()
TelnetInputListener, if any.