您应该可以通过telnet选项协商来做到这一点.协议默认为半双工模式,至少在交互式会话中,服务器应协商
suppress go ahead option和
echo option.
在最低限度,你可以在会话开始时吐出ff fb 01 ff fb 03(将回显,将会抑制),然后用ff fb 01(将回显)到任何ff fd 01(do echo)回声)并使用ff fb 03(将禁止前进)回复任何ff fd 03(禁止前进).
编辑补充说,本杰克逊提到的线路协商是一个更好的答案.绝大多数客户端连接在23以外的其他端口上,禁止预售将是不够的.
不过我认为其他的问题是Java正在发送Unicode字符.例如,当你说(char)0xff时,Java假定你是指UTF-16字符U 00ff,它是ÿ.它可能通过套接字使用UTF-8编码发送,因此telnet客户端看到两个字节:c3 bf,它传递并显示为ÿ.
您可以做的是明确告诉Java使用ISO-8859-1编码.例如,您可能以前曾经做过这样的事情:
out = new PrintStream(connection.getOutputStream());
out.print((char)0xff); // sends 0xc3 0xbf
out.print((char)0xfb); // sends 0xc3 0xbb
out.print((char)0x01); // sends 0x01
out.flush();
相反,您可以使用OutputStreamWriter来指定所需的编码:
out = new OutputStreamWriter(connection.getOutputStream(), "ISO-8859-1");
out.write((char)0xff); // sends 0xff
out.write((char)0xfb); // sends 0xfb
out.write((char)0x01); // sends 0x01
out.flush();