Windows机器禁止Telnet“不会回显”

时间:2014-01-07 09:16:06

标签: c sockets telnet

在我的telnet客户端代码中,我想总是回声。所以我会把回信发送给服务器。

Linux机器遵守命令,但是Windows机器会禁止使用wont命令并发送do echo命令[确认来自wireshark和GDB]。

可能的原因是什么?

2 个答案:

答案 0 :(得分:3)

如果我理解正确,WILL和WONT表示“本地”状态。如果您希望对方切换到另一种模式,则必须发送DO或DONT命令。

所以,我猜你必须发送一个“WILL ECHO”和“DONT ECHO”(意思是:我将执行回声,所以你不必回声)。

也许这份文件会有所帮助:

实施TELNET选项协商的Q方法:http://tools.ietf.org/html/rfc1143

答案 1 :(得分:0)

  

在我的telnet客户端代码中,我想总是回声。所以我会把回信发送给服务器。

一开始就错了。如果你回音,你需要发送DONT回音。 WILL / WONT是回复,而不是请求。无论如何,如果你想回应为什么你会说你不会?这没有意义。

  

Linux机器遵守命令

这不是命令,而是请求。服务器可以自由同意或不同意。如果服务器不同意,它将向您发送相反的WILL / WONT响应。如果它同意,它将向您发送同意的WILL / WONT响应。

  

但是windows机器会禁止使用wont命令并发送do echo命令[来自wireshark和GDB确认]。

这就是你想要的!你想回声,它告诉你回声。你在协议中弄错了,但最终的结果正如你所希望的那样。

注意:为避免循环,如果对等方在发送DO / DONT之前已发送WILL / WONT响应,则在收到您的DO / DONT后,它不会向您发送相同的消息,如果它现在同意你的看法。当任何一方最初不同意时,都会发生这种情况。再次查看Telnet RFC。您特别需要阅读有关如何实现此功能的方法('Q方法')。