IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
Avatar
Martin Bruna
Člen
Avatar
Martin Bruna:9.4.2014 20:44

Ahoj,
V objektu TcpClient mam spojení se servrem, ale když server ukonči svou činnost, tak nejsem schopen tuto změnu zaznamenat na klientovy proměnná connected je stále true, až do okamžiku, kdy se pokusím odeslat data, poté vyskočí vyjímka a ve stejnou chvíli se teprve ta proměnná změní na false.
Nevíte o nějakém jiném způsobu jak zjistit ukončení spojení? Využívat zachytávání vyjímek se mi moc nechce vzhledem k výkonu. Předem děkuji za pomoc.

 
Odpovědět
9.4.2014 20:44
Avatar
Odpovídá na Martin Bruna
Luboš Běhounek Satik:9.4.2014 21:01

Ze serveru si musíš při ukončování poslat zprávu, podle který poznáš, že máš klienta odpojit.

Nahoru Odpovědět
9.4.2014 21:01
https://www.facebook.com/peasantsandcastles/
Avatar
Martin Bruna
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
Martin Bruna:9.4.2014 21:04

Díky, ale tohle řeší jen půlku mého problému. Co když server spadne nebo se nějak přeruší spojení.

 
Nahoru Odpovědět
9.4.2014 21:04
Avatar
Odpovídá na Martin Bruna
Luboš Běhounek Satik:9.4.2014 23:33

Nezbývá ti než třeba každých třeba 5 sekund to spojení kontrolovat a pokud do dalších 5 sekund neodpoví, tak spadl - odpojit.

Editováno 9.4.2014 23:33
Nahoru Odpovědět
9.4.2014 23:33
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Martin Bruna
Michal Žůrek - misaz:10.4.2014 6:48

servery by ale neměly moc často padat a když k tomu dojde, prostě nastane nějaká chyba. Však to je jedno, spadlý server ti v aplikaci nijak nepomůže.

 
Nahoru Odpovědět
10.4.2014 6:48
Avatar
Honza
Člen
Avatar
Odpovídá na Martin Bruna
Honza:10.4.2014 9:36

Ahoj,

jak už zde bylo řečeno výše, pokud server bude ukončovat spojení, měl by o tom informovat klienty kteří na to adekvátně zareagují (odpojí se).

To jak budeš zjišťovat zda je server dostupný záleží na povaze aplikace. Buď můžeš v určitých časových intervalech posílat na server něco jako ping a čekat na odpověď s tím že pokud nepříjde, budeš server považovat za nedostupný. A nebo pokud ti stačí s o nedostupnosti serveru dozvědět až ve chvíli kdy posíláš data, hoď to do try-catch bloku (tomu se stejně nevyhneš).

Ono obecně, neboj se ten try-catch blok používat, vliv na výkon to samozřejmě má, ale znatelné to je až ve chvíli kdy ho voláš opravdu hodněkrát během krátké chvíle. Neříkám že by se měl cpát všude, ale obecně bych doporučoval ho používát "za vrátky" tvé aplikace. Tzn. všude tam kde se může cokoli stát vinou někoho jiného (špatné spojení, nefunkční server, poškozený soubor atd.) a ty to nemůžeš nějak ovlivnit.

Nahoru Odpovědět
10.4.2014 9:36
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Martin Bruna
Člen
Avatar
Odpovídá na Honza
Martin Bruna:10.4.2014 16:24

Díky, doufal jsem ze to nebudu muset použít ale vypadá to že ano. Jen doufám, že to přece jen neubere moc výkon.

 
Nahoru Odpovědět
10.4.2014 16: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 7 zpráv z 7.