nastaveni timeoutu pro connect()
Ing. Pavel PaJaSoft Janousek
janousek na fonet.cz
Čtvrtek Duben 26 09:14:25 CEST 2001
> Jeste to jde udelat pres alarm()?
IMHO hodne spinave a vlastne nesmyslne reseni...(i kdyz trivialni na
implementaci).
> oldalarm = signal(SIGALRM, abort_connect);
> alarm(timeout);
!!!!!!
> if (connect(sock, (struct sockaddr *)&s, sizeof(s)) < 0) {
> not_connected();
> }
> alarm(0);
> signal(SIGALRM, oldalarm);
Ftip je v tom, ze tam kde jsou '!!!!' neni zaruceno NICIM, ze alarm a
connect pujdou po sobe, predstavte si, ze mate vytizeny system nebo ze
se spozdi nejaka I/O HW operace... skocite do obsluhy signalu jeste
drive nez jste se vubec o connect pokusili... - rozhodne doporucuji
ciste reseni, tedy non-blocking sockety apod.
-----------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft) FoNet, spol. s r. o.
Vyvoj software, Intranet / Internet Anenska 11, 602 00 Brno
E-mail: mailto:Janousek na FoNet.Cz Tel.: +420 5 4324 4749
SMS: mailto:P.Janousek na SMS.Paegas.Cz Fax.: +420 5 4324 4751
WWW: http://WWW.FoNet.Cz/ E-mail: mailto:Info na FoNet.Cz
-----------------------------------------------------------------------
Další informace o konferenci Linux