Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

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é
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

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

Avatar
Václav Houra:24.8.2023 17:24

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

Avatar
Tomáš Klír:25. marca 14:06

Obecně, dávat do konstruktoru nekonečnou smyčku mi nepřijde jako dobrý nápad.

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.

Zobrazené 5 správy z 5.