Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 14 - Komunikace Klient/Server - Úprava serveru a klienta

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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.

Editováno 19.12.2014 2:04
 
Odpovědět
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

 
Odpovědět
28.3.2017 12:44
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá 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

 
Odpovědět
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í.

 
Odpovědět
24.8.2023 17:24
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.