Telnet服务器启用客户端线路模式

时间:2012-08-23 13:44:41

标签: arduino telnet

我正在Arduino上写一个小的Telnet客户端。使用以下代码将其停用后,如何重新激活Telnet客户端线路模式?

  client.write(255); // IAC
  client.write(251); // WILL
  client.write(1);   // ECHO

  client.write(255); // IAC
  client.write(251); // WILL
  client.write(3);   // suppress go ahead

  client.write(255); // IAC
  client.write(252); // WONT
  client.write(34);  // LINEMODE

用于输入密码。

我尝试了反向命令,但它们不起作用。

1 个答案:

答案 0 :(得分:1)

使用BSD telnet客户端,使用以下命令:

set debug
set prettydump
set options
set netdata

然后,可以使用命令切换一次性字符模式和一次一行模式

mode line
mode character

可以检查并重复下面的谈判。

但是,仅发送IAC DONT ECHO,密码,CR NUL,然后IAC DO ECHO就足够了。使用“WILL ECHO,WILL SGA”输入“一次一个字符”模式称为“kludge模式” - 重新启用ECHO应默认为标准NVT行为(linemode)。

然而,

bsd客户端具有完全扩展的线路模式支持。这不是微不足道的,近50%的代码库(forwardmask,slc,callbacks等)。

如果服务器回复WONT LINEMODE,那么它实际上仍处于默认的NVT线路模式 - 它只是不在增强的线路模式中或者不关心它。这就是为什么发送DO LINEMODE实际上是一个糟糕的想法,因为你需要期望从后来的rfc中确认线路模式的子协商协议。

回复DO LINEMODE的服务器可能会继续请求线路模式子协商,例如IAC SB LINEMODE MODE< 1字节位掩码>和IAC SB LINEMODE FORWARDMASK。使用WONT FORWARDMASK拒绝此响应。 MODE必须设置ACK位并以类似方式回复。