Java Socket Shoutbox

0

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?

0

Poczytaj o protokole xmpp.

0

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

0

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.

0

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

0

Mogę ci wysłać kod mojego testowego chatu konsolowego. Prymitywny ale przykład dobry.
Zrobiłem go na datagramach.

0

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.

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