我有写入的Java6在Solaris守护程序。客户端可以使用Telnet风格界面连接到它。他们远程登录到一个特定端口,并且我对他们读取输入和行为的线。

在一个点上,我需要提示用户输入密码,而当他们进入,我想禁用字符回显到Telnet客户端。

代码具有Socket对象,并创建从套接字的的getInputStream()结果的InputStream,然后读取并且从InputStream缓冲器字符,打破起来上CR / LF边界。

我不能看到在任一的InputStream或插座的任何属性来禁用字符回送返回给客户端。

有人可以轻推我朝着正确的方向吗?

有帮助吗?

解决方案

听起来像是你需要建立一个支持无回声等命令的简单的网络虚拟终端。已经有您应该参考上SO一个很好的答案: Telnet服务器

其他提示

您应该明白的地方回声的来源。 TCP连接和Java InputStreams不要对自己提供的回声。用户通常运行Telnet程序开始在“本地回显”模式,这意味着它呼应的一切由用户到用户的屏幕类型。当Telnet客户端连接到一个实际的telnet服务器,它通常协商“远程回波”模式在这种情况下远程系统提供的回声。当远程登录连接到别的东西,如HTTP或SMTP服务器,它只是停留在本地回显模式。

用户可以发出命令来关闭本地回显在的客户端,但它不会是非常人性化的,要求你的用户这样做。由于对方回答说,如果你想切换呼应和关闭,你需要提高你的服务器支持Telnet协议,然后谈判与客户远程回声。

如果你这样做,你也会碰到线在-A-时间与字符在-A-时间的问题。远程登录开始在线路以一次一个模式。这荣誉的行编辑键,如退格本地,并只发送行到服务器时,用户点击返回。如果你正在做远程回声,那么你需要回应字符作为用户类型他们,他打回不是之后。所以,你必须支持字符在-A-时间和服务器实现在线编辑。

您应该在服务器主机上的Telnet服务器程序密切关注。这也许可以使用现有的telnet服务器作为前端为你的程序,而不是重新实现它做的一切。好运。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top