lunes, 15 de julio de 2013

Cerrar o reutilizar sockets

Introducción


Si habéis trabajado con sockets y puertos, es posible que os haya pasado que se queda el socket abierto y no podéis volver a ejecutar vuestra aplicación por error a crear un socket que ya se ha abierto previamente.

Para corregir este problema se puede o hacer el socket como re-usable por código (C) en vuestra aplicación o mediante línea de comandos.


Por código



int so_reuseaddr = TRUE; 
if( setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &so_reuseaddr, sizeof(so_reuseaddr) ) < 0 ){
   // error
   return -1; 
}

Donde el sockfd es el socket creado previamente.


Por línea de comandos


fuser -k -n <protocol> <port>
  
Por ejemplo:
fuser -k -n udp 7777 

No hay comentarios:

Publicar un comentario