Ahoj,
dik za clanek. Uz se tesim na NIO ;)
Názory k článku
Síťování v Javě: Chatovací server
podlesh (neregistrovaný)
4. 5. 2006 9:46
Nový
Chybička
celé vláknoSice 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).
remove, která naopak sychronizována není.
Správná řešení jsou dvě:
- 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(). -
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 (neregistrovaný)
4. 5. 2006 10:47
Nový
Re: Chybička
celé vlákno
Tak to uz rovnou vyhodit ArrayList a dat tam Vector, ne?
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 (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.
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.

