java - 第一次读取 BufferedReader 流时产生的垃圾

标签 java telnet

我正在构建一个简单的 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/

相关文章:

java - Bukkit - 检查玩家是否有自定义项目/传递自定义项目对象时出现问题

java - 在为我们的应用程序形成 REST URL 时,我们应该如何区分与同一对象相关的两个服务?

java - 如何使用 Junit 和 Java 模拟和编写 Azure 服务总线主题的单元测试?

java - 如何检查日期是否超过 30 天?

如果程序关闭,Java如何停止线程

ssh - Spark worker 不会绑定(bind)到 master

java - 使用 Java process exec 通过 tee 命令将 telnet 输出通过管道传输到日志文件

使用套接字的java简单telnet客户端

java - 无法从 Java 启动 telnet session

c# - Telnet 服务器如何与客户端通信?