(Ne) uzavreny socket a "Address already in use"
Jirka Kosina
jikos na jikos.cz
Středa Listopad 28 19:04:27 CET 2001
On Wed, 28 Nov 2001 mjp na email.cz wrote:
> mam drobne programky - server a klient,
> pokud ukoncim server a potom klient a nasledne znovu spustim server, oznami chybu pri bind
> (errno=98) "Address already in use".
> Pritom se domnivam, ze sockety spravne zaviram
> - close(socket) - na strane klienta i serveru.
> Pokud ukoncim prvne klienta a pak server, je vse v poradku.
> Adresa po case (radove minuty) uz "in use" neni
> a muzu ji opet pouzivat.
man 7 ip
A TCP local socket address that has been bound is unavail
able for some time after closing, unless the SO_REUSEADDR
flag has been set. Care should be taken when using this
flag as it makes TCP less reliable.
Cili do programu nekam za volani socket() pridejte neco jako
int o=1;
setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&o,sizeof(o));
--
JiKos.
Další informace o konferenci Linux