【问题标题】:BufferedReader prepends inputBufferedReader 前置输入
【发布时间】:2011-11-25 02:06:59
【问题描述】:

我正在尝试使用 BufferedReader 从 Socket 读取数据,如下所示

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while ((line = in.readLine()) != null)
        {
        }

我输入一个字符串,比如“AUTH”,我得到line 变量的值为 ÿûÿû ÿûÿû'ÿýÿûÿýAUTH

这个问题有什么解决办法吗?

【问题讨论】:

标签: java sockets telnet putty bufferedreader


【解决方案1】:

这只是意味着额外的数据无论出于何种原因都在套接字中。我的猜测是您正在使用 telnet 连接到服务器,那就是 telnet protocol negotiation

Java 不会向真正存在的内容添加额外数据。

【讨论】:

  • 是的,我正在使用 telnet (Putty)
  • 我同意,请尝试使用 netcat 而不是 telnet。使用 Putty,在主机名下有连接类型,使用“raw”而不是“telnet”。
【解决方案2】:

BufferedReader.readLine() 用于包含“行”的输入,请确保您提供的输入正确。或者,您可以定义自己的终止符,然后使用 BufferedReader.read() 逐个字符地读取输入(如果您不知道输入的长度,例如 while (in.read()!=-1) 或类似的东西,请使用 while 循环)。

【讨论】:

    【解决方案3】:

    bufferedReader 预置输入

    不,它没有。有些东西正在编写您不期望的额外输入。在这种情况下,Telnet。 Telnet 是一种协议,不仅包含文本行。

    【讨论】:

      猜你喜欢
      • 2015-08-17
      • 2015-03-17
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 2019-02-17
      相关资源
      最近更新 更多