当前位置: 首页 > 工具软件 > Commons EL > 使用案例 >

java commons telnet_如何使用Java Apache commons发送telnet擦除线(EL)?

汝飞
2023-12-01

我一直试图找出这一个现在一段时间:

我建立了一个apache commons telnet客户端,它可以将命令发送到服务器并读取响应。我的程序基本上是这样工作的:

TelnetClient telnetClient = new TelnetClient();

// Add option handlers

TerminalTypeOptionHandler ttopt = new TerminalTypeOptionHandler(

"VT100", false, false, true, false);

EchoOptionHandler echoopt = new EchoOptionHandler(true, false, true,

false);

SuppressGAOptionHandler gaopt = new SuppressGAOptionHandler(true, true,

true, true);

try {

telnetClient.addOptionHandler(ttopt);

telnetClient.addOptionHandler(echoopt);

telnetClient.addOptionHandler(gaopt);

} catch (InvalidTelnetOptionException e) {

System.err.println("Error registering option handlers: "

+ e.getMessage());

throw new IOException();

}

// Connect to server

telnetClient.connect(SERVER_ADDRESS, SERVER_PORT);

byte[] data = new byte[] { 'f', 'o', 'o', '\r', '\n' };

// Send "foo"

telnetClient.getOutputStream().write(data);

telnetClient.getOutputStream().flush();

// ...

// Erase previous input

data = new byte[] { (byte) TelnetCommand.IAC, (byte) TelnetCommand.EL,

'\r', '\n' };

telnetClient.getOutputStream().write(data);

telnetClient.getOutputStream().flush();我试图做的是发送一个telnet EL命令来擦除以前发送的字符(“foo”)的整个行。 Telnet命令总是以前面的IAC字符发送,这也是我发送的内容。

我有一个监听器的工作实现,它读取服务器回声并将其打印出来。

问题是,当我发送IAC-EL时,字符不会被解释为命令。反过来,IAC-EL字符作为“foo ø”附加回前一个输入。

这可能是行模式一次设置为一个字符时出现问题吗?

另外服务器端通过telnet运行VT100。也许有一些方法可以发送VT100转义序列来删除该行,例如, “←[1K”。无论如何,我发送VT100序列的过程并不成功。

 类似资料: