У меня есть часть кода, куда сервер должен отправить и после этого получить некоторый ввод от клиента.Проблема заключается в том, что если я закрываю поток PrintWriter, он автоматически переходит в состояние перехвата, когда я объявляю BufferReader.Я не могу удалить out.close из PrintWriter, потому что на стороне клиента у меня есть цикл, в котором он ожидает не оцененное количество строк, поэтому единственный способ сообщить ему, что сервер завершил работу, закрыв поток (яУгадай).Это код:
PrintWriter out = new PrintWriter(incoming.getOutputStream(), true);
for (int j = 0; j < i; j++) {
out.println(tmp[j]); // send the strings to the client
}
out.close();
BufferedReader in;
String op;
boolean exit = false;
try {
in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
while ((op = in.readLine()) != null) {
System.out.println("OP: " + op);
if (op.equals("Elimina")) {
String tmp = in.readLine();
contenutoTextArea.append("Ho eliminato la mail ").append(tmp).append(" \n");
textarea.setText(contenutoTextArea.toString());
File file = new File("src/server/" + nomeAccount + "/" + tmp + ".txt");
file.delete();
}
}
} catch (IOException ex) {
System.out.println("Unable to read messages");
(код перестает работать при in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
и переходит в состояние перехвата)