chyba pri opetovnem bind u socketu

David Rohleder davro na ics.muni.cz
Pondělí Říjen 22 18:07:41 CEST 2001


radek.cervinka na centrum.cz (Radek Cervinka) writes:

> >> handle:=socket(PF_INET, SOCK_STREAM , IPPROTO_TCP);
> >> listen(Handle,5);
> >> with FAddr do
> >>     begin
> >>       sin_family := AF_INET;
> >>       sin_port := htons(Port);
> >>       sin_addr.s_addr := INADDR_ANY;
> >>     end;
> >> bind(Handle, FAddr, SizeOf(FAddr));
> >> setsockopt sem nevolal (musim? a kdyz tak jak)
> >
> >Parametr SO_REUSEADDR je pravdepodobne to, co Vas zajima.
> >
> Ale tam by uz nikdo nemel byt - muj program skoncil a tudiz by mel byt
> ten port volny :(
> Zavirani je takto
>   Libc.shutdown(Handle,2);
>   close(Handle); 


Ono totiz, kdyz se socket zavre, tak se musi spravne dokoncit TCP
handshake pro uzavirani TCP spojeni, takze v jadernych tabulkach musi
byt tento socket jeste nejakou dobu otevreny.


-- 
-------------------------------------------------------------------------
David Rohleder						davro na ics.muni.cz
Institute of Computer Science, Masaryk University
Brno, Czech Republic
-------------------------------------------------------------------------


Další informace o konferenci Linux