Hlavní navigace

Názory k článku
Síťování v Javě: Chatovací server

Milan
Milan (neregistrovaný)
4. 5. 2006 8:30 Nový

Pekny clanek

celé vlákno
Ahoj,
dik za clanek. Uz se tesim na NIO ;)
skylie
skylie (neregistrovaný)
5. 5. 2006 3:00 Nový

Re: Pekny clanek

celé vlákno
Fakt pekne priklad.
podlesh
podlesh (neregistrovaný)
4. 5. 2006 9:46 Nový

Chybička

celé vlákno

Sice jsem kód jen zběžně prolétl, ale nemohu se ubránit dojmu, že se tam vloudila chybička v sychnronizaci. Označit metodu getClients() jako synchronized totiž vůbec nepomůže (je to dokonce úplně k ničemu, protože zde nemůže dojít k žádné kolizi).

Kritické místo je metoda remove, která naopak sychronizována není. Správná řešení jsou dvě:
  1. Metodu getClients() úplně vyhodit (vrací nebezpečná data) a místo toho doplnit operace jako:
    public synchronized boolean removeClient(Client client) {
       return clients.remove(client);
    }
    
    A pak volat removeClient().
  2. Zajistit, aby celý seznam byl vždy synchronizován:
    clients = Collections.synchronizedList(new ArrayList<clientthread>());
    
    Pak je možné klidně bez obav volat remove.
Cavity
Cavity (neregistrovaný)
4. 5. 2006 10:47 Nový

Re: Chybička

celé vlákno
Tak to uz rovnou vyhodit ArrayList a dat tam Vector, ne?
Kamil Podlešák aura:100
4. 5. 2006 18:08 Nový

Re: Chybička

celé vlákno
A nebo :-)
tenson
tenson (neregistrovaný)
4. 5. 2006 22:58 Nový

architektura

celé vlákno
celkovo mi pride ukazka ako velmi rychlo zbastleny kod. Minimalne by som uvazoval nad vytvorenim nejakej ThreadGroupy aby bolo mozne riadit spustene thready. Tiez slucka while pre echovanie do broadcastu ide riesit elegantnejsie while((input=in.readLine)!=null){...} a nedavat tam tu sialenost s breakom ..len to zneprehladnuje kod. Dalsia vec naco vyuzivat featury 1.5-kovej javy ked jej realne nasadenie je zatial obmedzene viacmenej na akademicke ci domacokutilske kruhy. A takych veci tam je viac. Na druhej strane ako priklad vytvorenia serversocketu a socketovej komunikacie je to postacujuce, len je potrebne clanok tak aj oznacit t.j. pre zaciatocnikov.
podlesh
podlesh (neregistrovaný)
5. 5. 2006 10:13 Nový

Re: architektura

celé vlákno
No, zas tak tvrdý bych nebyl. Že je článek pro začátečníky je myslím jasné.

A s tou 1.5 rozhodně nesouhlasím. Sice se ještě často používá 1.3 či 1.4, ale 1.5 už se nasazuje docela dost. Koneckonců JDK 1.5 je už stabilní hodně dlouho. Kdo potřebuje starší verzi (třeba kvůli aplikáči, nebo správci produkčního serveru) o tom ví a pro ostatní neexistuje důvod proč se 1.5 vyhýbat.
Zasílat nově přidané příspěvky e-mailem