在telnet中清除输出

时间:2011-03-02 16:57:22

标签: java telnet

有没有办法让telnet应用程序清除输出客户端(使用Java Socket连接+缓冲区)?例如,程序向连接的用户查询登录名和密码,当他们成功登录时,我会为Windows cls或Linux clear

3 个答案:

答案 0 :(得分:6)

telnet应用程序是终端模拟器。在很久以前,与计算机通信的唯一方法是使用具有纯文本屏幕和键盘的终端。终端将您输入的所有内容发送到计算机。计算机发回了打印在屏幕上的字符。就像telnet一样。 DEC创建了一系列名为VT52,VT100等的终端。他们能够解释特殊的控制序列,以便计算机可以给终端提供更多花哨的指令。这些控制序列由ANSI标准化,现在称为ANSI转义码。了解VT100转义码的终端仿真器称为VT100终端仿真器。

您可以在维基百科和其他地方查找ansi转义码。它们都以转义的字符代码开头,并由控制字符跟随。清除屏幕的控制字符是“2J”。 因此,您需要做的是将此字符串从服务器发送到telnet客户端:

myOutputStream.print("\u001B[2J");
myOutputStream.flush();

您也可以发送其他控制字符。尝试“\ u001B [7m”来反转屏幕。

答案 1 :(得分:1)

在Linux方面,清除只是发出一些终端控制字符,告诉它清除屏幕。对于VT终端,那是Esc]2J。不确定Windows是否支持类似的东西。

答案 2 :(得分:0)

如果你需要支持windows,滚动空白行是我在Java中可以想到的唯一方法。