您应该能够通过telnet选项协商来做到这一点。 该协议默认为半双工模式,并且至少对于交互式会话,服务器应协商“
抑制前进”选项和“
回声”选项。
最起码,您可以ff fb 01
ff fb 03
在会话开始时吐出(会回声,会抑制前进),然后ff fd 01
用ff fb01
(会回声)回复任何ff fd 03
(做回声)并回复任何(做回声,前面)ff fb 03
(将抑制前进)。
编辑 以补充本杰克逊提到的线路模式协商是一个更好的答案。对于大多数非23端口连接的客户端,抑制超前运行是不够的。
但是,我认为您遇到的另一个问题是Java正在发送Unipre字符。例如,当你说
(char)0xff,爪哇假设你指的是UTF-16字符
U+00ff是
ÿ。它可能是使用UTF-8编码通过套接字发送的,所以telnet客户端看到两个字节:
c3bf它继续传递并显示为
ÿ。
您可以做的是明确告诉Java使用ISO-8859-1编码。例如,您之前可能已经做过这样的事情:
out = new PrintStream(connection.getOutputStream());out.print((char)0xff); // sends 0xc3 0xbfout.print((char)0xfb); // sends 0xc3 0xbbout.print((char)0x01); // sends 0x01out.flush();
相反,您可以使用OutputStreamWriter指定所需的编码:
out = new OutputStreamWriter(connection.getOutputStream(), "ISO-8859-1");out.write((char)0xff); // sends 0xffout.write((char)0xfb); // sends 0xfbout.write((char)0x01); // sends 0x01out.flush();



