Czytanie z BufferedReader.

0

Cześć.

Mam taki problem. W metodzie run uruchamiam metodę która otwiera mi strumienie.

public boolean openCommunication(){

        //inicjalizacja strumieni
        try{
            brinp = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out = new DataOutputStream(socket.getOutputStream());
        }
        catch(IOException e){
            server.serverGui.insertText(threadName + "| Błąd przy tworzeniu strumieni " + e);
            server.removeThread(this);
            return false;
        }
        return true;
    }

Teraz wywołuję metodę która zwraca mi odczytany nick gracza (w metodzie run):

public String setThreadPlayerName(){
        String nick = null;
        Boolean next = true;
        try {
            nick = brinp.readLine();
        } catch (IOException e) {
            server.serverGui.insertText(threadName + "| Błąd wejścia-wyjścia." + e);
            server.removeThread(this);
            next = false;
        }
        if(next){
            if(nick.contains("Nick")){
                nick = nick.replace("Nick","");
            }
        }
        return nick;
    }

Następnie w metodzie run w niekończącej się pętli while chcę odczytywać wiadomości od użytkownika ale ponowne wywołanie metody readLine() zawiesza mi cały program. Czemu? i jak temu zaradzić. Próbowałem zamykać strumienie i otwierać je na nowo ale cały czas dostaję wyjątki.

1

Może nie uzyskujesz odpowiedzi od klienta, wtedy program logiczne że się zawiesi. Stwórz osobny wątek i w nim czekaj na odpowiedź od klienta to raz. Sprawdź czy klient wysyła wiadomość po nadaniu nicku to dwa :D.

1 użytkowników online, w tym zalogowanych: 0, gości: 1