我正在构建一个简单的 telnet 连接守护进程,用于内部网络应用程序之间的通信,但在从 BufferedReader 读取第一行时遇到了问题。
由于其中有很多其他垃圾,因此该代码片段并不完整,因此我将其删除,仅包含对象创建和从 Steam 中读取的内容。
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
}
输入test
进入telnet连接产生 v? v v? v' ²? v? ²?test
在运行该程序的控制台中。在第一行之后发送的行不会发生这种情况。
有没有办法在用户与它交互之前清除这些垃圾,这样它就不会与第一行一起发送?或者这个问题是由我的 telnet 客户端引起的(当我编写与之交互的客户端时可能会得到解决)?
最佳答案
我强烈怀疑这是 telnet 协议(protocol)协商的问题。理想情况下,您应该在阅读 RFC 854 后处理它。仔细。
请注意,您不应该只使用InputStreamReader
而不指定字符编码 - 平台默认编码不太可能是您想要的编码。
关于java - 第一次读取 BufferedReader 流时产生的垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6979456/