Przeczytalem wlasnie rozdział o aplikacjach sieciowych z mojej ksiazki o Javie. Jest on dosyc krotki wiec zakonczylem na programie, w ktorym wpisujesz jakis wyraz i zwracany jest on wspak. Chciałbym teraz napisac cos powazniejszego. Myslalem nad prostym shoutboxem. I tutaj moje pytanie bo w google nie znalazlem nic na temat implementacji takiego. Chcialbym zeby po wpisaniu czegos do konsoli wszyscy klienci byli natychmiast powiadamiani i nowa wiadomosc byla wyswietlana na ich konsoli. Jak takie cos zaimplementowac? Przychodzi mi na mysl jedynie takie rozwiazanie, ze wiadomosc jest dodawana do tablicy a watek caly czas sprawdza czy nie ma nowej i jak jest to ja drukuje, ale wydaje mi sie ze mozna to zrobic znacznie lepiej. Czyli ogolnie mowiac chodzi o powiadamianie wszystkich klientow o jakims wydarzeniu.. Jak to zrobic?
Poczytaj o protokole xmpp.
A ja polecam poczytać o czymś takim co się zwie WebSocket - client w js, reszta może być w javie. Problem taki że materiałów mało, musisz bazować na przykładach.
edit* prosty przykład: *http:java.dzone.com/articles/creating-websocket-chat
To może po prostu sockety?
Wydaje mi się że warto przez to przejść, żeby wiedzieć chociaż troche jak działa komunikacja między komputerami.
Oczywiste że Sockety. W tym przypadku wielowątkowo.
Ja próbując robić aplikacje zawsze robię 2 wątki. Na odbiór i na wysył.
Taki mini chat :D.
W tym przypadku wystarczy że serwer będzie tworzył wiele wątków z czego każdy odpowiada za wysyłanie zawiadomienia do jednego z klientów.
Zaś klient jeden wątek odpowiadający za odbiór.
Tu masz wystarczający materiał:
http://prac.us.edu.pl/~dendzik/java/i4/index.html
Mogę ci wysłać kod mojego testowego chatu konsolowego. Prymitywny ale przykład dobry.
Zrobiłem go na datagramach.
Hmm z tego co czytam to Ty byś potrzebował mutlicast socket. Tam tworzysz właśnie grupy i możesz wysyłać z grupy jak i (o to Ci chyba chodzi) wysyłać do grupy. Tu proste przykłady:
http://www.java2s.com/Tutorial/Java/0320__Network/0220__MulticastSocket.htm
A tu manual z Oracle:
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/MulticastSocket.html
Oczywiście na "normalnych" socketach też to zrobisz ale bardziej łopatologicznie i mniej funkcjonalnie.
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.