Java BufferedReader是否忽略第一行?

Java BufferedReader是否忽略第一行?,java,telnet,bufferedreader,Java,Telnet,Bufferedreader,我目前正在编写一个服务,它应该接受明文命令,然后根据这些命令返回一些东西,这些命令也是明文的 我对BufferedReader有一个奇怪的问题,或者,可能是telnet有点奇怪,出于某种原因,BufferedReader读取第一个命令,但是不管我做什么,该命令都会被忽略,我可以通过发送第一个命令两次来解决这个问题,但在我看来,这只是有点牵强 下面的代码位于run()方法中。 然后我将out设置为PrintWriter和in设置为BufferedReader。 运行变量默认为true out =

我目前正在编写一个服务,它应该接受明文命令,然后根据这些命令返回一些东西,这些命令也是明文的

我对
BufferedReader
有一个奇怪的问题,或者,可能是telnet有点奇怪,出于某种原因,
BufferedReader
读取第一个命令,但是不管我做什么,该命令都会被忽略,我可以通过发送第一个命令两次来解决这个问题,但在我看来,这只是有点牵强

下面的代码位于
run()
方法中。 然后我将
out
设置为
PrintWriter
in
设置为
BufferedReader
运行
变量默认为
true

out = new PrintWriter(handle.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(handle.getInputStream()));
while (runs) {
    String msg;
    msg = in.readLine();
    String[] command;
    command = msg.split(" ", 3);
    /* do something with the command */
}
所以我的问题是,如果
BufferedReader
忽略了第一行,还是telnet没有与我合作

如果是别的,那么请告诉我

编辑 我收到了以下调试消息:

调试:���� ����'������/尼克·哈尔马克

所以我想这是关于所有的问号

我实际上是在使用最新的腻子,因为我是在windows盒子上开发的。。。据我记忆所及。。。那么默认情况下它不存在

如果使用PuTTY,则需要选择“原始”连接类型


Microsoft telnet服务器喜欢在开始时进行一些内容/协议协商,因此PuTTY默认情况下也会这样做。这就是你正在阅读的垃圾。

你深入研究并找出问题的原因,而不仅仅是解决问题,这绝对是正确的。这是发生在某个地方的原因。我在Netbeans和web上寻找了很多关于这个问题的解决方案,但我没有找到答案。至少你应该打印/注销msg的连续值,看看这是否能给你一些线索。从代码示例判断,我认为这部分是正确的。所以它会留下周围的东西。例如,您确定没有跨线程共享中的
变量吗?或者更糟糕的是,
handle
socket?@mpriva我正在解析右边maner中的
handle
变量,它没有在其他任何地方使用,而且我有一个带有
ServerSocket
的线程,在那里它等待输入连接,并在有人连接到服务后设置在那里,然后我用套接字作为参数创建了一个新线程,然而,我只是在工作线程中使用它,而不是在其他任何地方,因为在以前的线程中会有一个新变量/被覆盖。我应该知道,为什么Linux不使用这些字符,或者更确切地说是telnet客户端?@RalphAndreasen我不知道为什么,甚至不能给出一个没有受过教育的猜测,除非它可能与内容协商有关,一个在默认情况下尝试这样做,另一个则没有。