(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