Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – Komunikácia Klient / Server - 3. diel - Úprava servera

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
vacullik
Člen
Avatar
vacullik:19.12.2014 2:02

Zdravím,
jedna připomínka, myslím, že by jsi měl synchronizovat i přidávání do kolekce clientBufReaders v metodě run(). Metoda add není samozřejmě atomická a v tomto případě je docela velká pravděpodobnost, že se zrovna při jejím vykonávání přepne kontext do main vlákna, které po připojení alespoň jednoho klienta téměř pořád do této kolekce přistupuje. Důsledek je, že se mi při přidání druhého klienta téměř vždy vyhodí výjimka o dvojím přístupu do kolekce.

Editované 19.12.2014 2:04
 
Odpovedať
19.12.2014 2:02
Avatar
Freddy Krueger:28.3.2017 12:44

Ahoj, můžete někdo poradit, jak by se postupovalo, aby mohl i server odesílat data klientům, jak všem, tak jen jednotlivým? Děkuji

 
Odpovedať
28.3.2017 12:44
Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Freddy Krueger
pocitac770:28.3.2017 17:53

Jak v případě klienta, tak serveru pracuješ se Socket objecty, tzn. funguje přesně stejný postup, jako zde byl popsaný, tzn. Zde v kódu si nebudeš ukládat objekty BufferedReaderů, ale Socketů (nebo vlastních objektů, které budou představovat jednotlivé klienty, ve kterých bude uložen jak jejich socket, tak "input/output objekty"), které budeš používat na přijímání/odesílání zpráv. Pokud jde o jednotlivé klienty, tak si každého klienta při připojení nějak označíš, může ti stačit pouhý index v poli, ale může jít třeba o ID, nebo nějaaký nickname, záleží, jaký způsob ukládání dat o příchozích klientech zvolíš, viz výše. Pak jsi už jenom v nějaké své kolekci najdeš ten určitý klient a pouze tomu to odešleš. Na straně klienta vlastně uděláš to samé, tzn. si vezneš input, na kterém budeš číst stejně jako teď na serveru, a output, na který budeš posílat data

 
Odpovedať
28.3.2017 17:53
Avatar
Václav Houra:24.8.2023 17:24

Stále je v konstruktoru příliš výkonných činností.

 
Odpovedať
24.8.2023 17:24
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!