Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

recvfrom() a prichozi signal

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: recvfrom() a prichozi signal

Autor: ondra.holub

12:56:00 07.05.2009

Pokud je to na Linuxu, tak použít flag MSG_DONTWAIT, který neblokuje, ale vrátí EAGAIN, pokud by normálně k zablokování došlo. Pak je možné chvilku dělat něco jiného nebo třeba jenom udělat na chvilku sleep. Tady lze zkontrolovat i nějaký flag, který se nastaví tím signálem a podle toho se zařídit.

Nevím, jestli je tento flag na všech unixech. Ale snad by mělo být všude možné nastavit na descriptor toho socketu, že se má chovat neblokujícím způsobem (flagem O_NONBLOCK). Je to všechno v manuálových stránkách.

Citovat příspěvek

 

recvfrom() a prichozi signal

Autor: Ales Vesely

16:18:07 06.05.2009

Dobry den, delam aplikaci komunikujici pres UDP sockety. Klient se dostane do teto situace: ceka na data od serveru ve funkci recvfrom() nad blokujim socketem. Aplikace (klient) tedy "stoji" a ceka na data od serveru.

Zaroven v klientovi bezi timer, ktery kdyz zjistit, ze server dlouho neodpovida (tzn. paket se nejspise ztratil), tak posle signal SIGALRM. Ted, ale prichazi muj dotaz: jak lze na signal zareagovat tak, aby klient prestal cekat ve funkci recvfrom() a zacal delat neco jineho (nejspis teda preposlani paketu serveru)?

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: