首次读取BufferedReader流时的垃圾

时间:2011-08-08 08:30:58

标签: java telnet

我正在为内部网络应用程序之间的通信构建一个简单的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客户端引起的(当我编写与之接口的客户端时可能会修复)?

1 个答案:

答案 0 :(得分:4)

我强烈怀疑这是telnet协议协商。理想情况下,您应该仔细阅读RFC 854来处理它。

请注意,不应只使用InputStreamReader而不指定字符编码 - 平台默认编码不太可能是您想要的。