Witam,
tworzę prostą aplikację klient serwer działającą lokalnie. Na razie mogę wysyłać wiadomości na serwer i je odbierać, jednak problem się pojawia, gdy chcę z serwera wysłać kilka wiadomości na raz do klienta.
Mianowicie:
Wątek odbierający wiadomości w kliencie wygląda u mnie tak:
Thread receiverThread=new Thread(new Runnable() {
@Override
public void run() {
while (true) { // pętla by odbierał cały czas
try {
in = new InputStreamReader(socket.getInputStream());
reading = new BufferedReader(in);
String message = reading.readLine();
System.out.println(message);
} catch (Exception e) {
}
}
}
});
receiverThread.start(); // uruchomienie wątku odbierającego
Jeśli wiadomość z serwera wysyłam tak:
try {
save = new PrintStream(socket.getOutputStream());
save.println("Wiadomosc jeden");
save.println("Wiadomosc dwa");
save.println("Wiadomosc trzy");
}
} catch (Exception e) {
//obsluga wyjatku
}
To w kliencie przy pierwszym uruchomieniu wyświetla mi wiadomość jeden i dwa, a przy drugim tylko wiadomość jeden.
Jeśli wpisze to w pętle to odbierane są w kółko wszystkie trzy wiadomości
while(true)
{
save.println("Wiadomosc jeden");
save.println("Wiadomosc dwa");
save.println("Wiadomosc trzy");
}
Zastanawiam się, czy trzeba tu jakąś synchronizację zastosować, ale mam osobny wątek do wysyłania wiadomości na serwer, więc i odbieranie i wysyłanie powinno działać w miarę bez zakłóceń (chyba, że się mylę?)
Pewnie problem jest błahy, ale mimo wielu prób póki co go nie rozwiązałem.
Dzięki za wszelką pomoc. ;)