Откат кода клиента. В основном он считывает со стандартного ввода и отправляет сообщение серверу.Как «очистить» InputStream, не закрывая его?
public static void main(String[] args) {
try (Socket socket = new Socket("localhost", 1200)) {
OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.US_ASCII);
Scanner scanner = new Scanner(System.in);
for (String msg = scanner.nextLine(); !msg.equals("end"); msg = scanner.nextLine()) {
writer.write(msg + "\n");
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Фрагмент кода сервера. Распечатывает сообщение из потока.
public void run() {
try (InputStreamReader reader = new InputStreamReader(this.socket.getInputStream(), StandardCharsets
.US_ASCII)) {
StringBuilder builder = new StringBuilder();
for (int c = reader.read(); c != -1; c = reader.read()) {
builder.append((char) c);
if ((char) c == '\n')
System.out.print(builder);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Входной сигнал от клиента:
Text1
Text2
выход Сервер:
Text1
Text1
Text2
Проблема я столкнулся, что сервер печатает не только что получил сообщение, но и все сообщения до него.
Вопрос: Как сбросить «чистый» InputStream
, не закрывая его. И если это невозможно, то что является предпочтительным решением?
Глупые ошибки :). Tnx –