我正在使用 Rust 和 Tokio 构建一个简单的 TCP 聊天服务器。我的代码功能与他们的聊天示例相同这里。
但是,当在我的计算机(MacOS 12.6.6)上使用 telnet 客户端时,它总是回显用户输入的最后一行。我尝试过通过套接字发送各种不同的字节(IAC WONT ECHO 等),但这要么会中断并导致服务器端出现错误,要么什么都不做。 我注意到客户端总是默认为“过时的线路模式”,但我似乎无法像手册页提到的那样用“^E”切换回显。切换到字符模式会停止回声,但我想将其保持在逐行模式下。
我希望服务器默认不回显,如果有人知道我如何实现这一点,我将不胜感激。
IAC DONT ECHO
。
没有控制本地回显的选项,它由客户端程序根据(远程)ECHO 选项确定。注意,如果你打开ECHO,但服务器已经发送了WILL GA,客户端的行为会很奇怪,但我不知道为什么:
没有ECHO的GA的行为是什么? (远程登录) .
也许这就是您所看到的错误行为。
如果您想要本地编辑,但还指定回显,您可能需要实现 LINEMODE。
(有趣的是,我同时有完全相同的想法。)