如何在telneting时屏蔽用户输入?

时间:2011-06-17 00:46:55

标签: c# sockets

我有套接字应用程序。客户端连接的套接字使用不允许搜索的NetworkStream。

那么,由于NetworkStream不提供搜索,我如何在telnet到我的套接字服务器时屏蔽用户输入?

1。)它需要与第三方telnet一起工作,即:我不创建telnet客户端 2.)我可以满足于在telnet客户端中没有显示任何内容,但更喜欢屏蔽

提前致谢。

2 个答案:

答案 0 :(得分:5)

我将假设您正在利用本地回显(默认情况下telnet客户端会这样做。)telnet协议有一个带外控制命令结构,您可以使用它来切换它(请参阅RFC 854)。特别是,您需要暂时关闭本地回声,因此用户的telnet客户端不会简单地将字符放在屏幕上。如果希望客户端停止显示字符然后再发送IAC WILL ECHO命令(请参阅RFC 857),则可以通过发送IAC WILL NOT ECHO命令来执行此操作。

基本上,你只需要发送三个字节:0xFF 0xFC 0x01以关闭echo,以及三个字节:0xFF 0xFB 0x01以重新打开echo。

如果你想要,当你关闭回声时,你可以为你阅读的每个角色向用户发送一个'*'字符。这将给他们指示他们的角色正在接收,虽然对于密码,我更喜欢没有回声。

答案 1 :(得分:3)

Telnet协议可以支持“本地回声”和“远程回声”。通常这些天,一切都是通过远程回声完成的(这更好地支持交互式线路编辑功能)。这意味着服务器负责将所输入的内容发送回客户端,以便客户端可以在屏幕上显示它。

因此,为了支持“掩蔽”,那么:

  • 为每个输入的字符
  • 发回*之类的内容
  • 在输入密码时不要向客户发回任何内容