Мусор из первого чтения потока BufferedReader - PullRequest
0 голосов
/ 08 августа 2011

Я создаю простой демон подключения 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 (и может быть исправлена, когда я пишу клиент, который взаимодействует с этим)?

1 Ответ

4 голосов
/ 08 августа 2011

Я сильно подозреваю, что это согласование протокола telnet. В идеале вы должны обращаться с этим, внимательно прочитав RFC 854 .

Обратите внимание, что вы не должны просто использовать InputStreamReader без указания кодировки символов - очень маловероятно, что кодировка по умолчанию для платформы будет той, которую вы хотите.

...