Закройте буфер, не прерывая поток - PullRequest
0 голосов
/ 08 декабря 2018

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

...