我正在为内部网络应用程序之间的通信构建一个简单的telnet连接守护进程,当我从BufferedReader读取第一行时遇到了一个问题。
这个代码片段不完整,因为那里有很多其他垃圾,所以我把它剥离了只包括对象创建和从蒸汽中读取。
in = new BufferedReader(new InputStreamReader(this.client.getInputStream()));
out = new PrintWriter(this.client.getOutputStream(), true);
String line;
while (true) {
out.println(flag); // flag is just an integer
System.out.println(line);
// Processing the line and updating 'flag' accordingly
}
在telnet连接中输入test
,在运行该程序的控制台中产生 v? v v? v' ²? v? ²?test
。这不会发生在第一个之后发送的行。
有没有办法在用户与之接口之前清除垃圾,因此它不会与第一行一起发送?或者这个问题是由我的telnet客户端引起的(当我编写与之接口的客户端时可能会修复)?
答案 0 :(得分:4)
我强烈怀疑这是telnet协议协商。理想情况下,您应该仔细阅读RFC 854来处理它。
请注意,不应只使用InputStreamReader
而不指定字符编码 - 平台默认编码不太可能是您想要的。