Czytanie z BufferedReader.

Czytanie z BufferedReader.
BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 259
0

Cześć.

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

Kopiuj
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):

Kopiuj
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.

Kandif
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 231
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.