¿Usos de SO_REUSEADDR?

He usado SO_REUSEADDR para tener mi servidor que se terminó para reiniciar sin quejarse de que el socket ya está en uso. Me preguntaba si hay otros usos de SO_REUSEADDR ? ¿Alguien ha usado la opción de socket para otro propósito que no sea dicho?

Para TCP: el objective principal es reiniciar un proceso cerrado / finalizado en la misma dirección.

El indicador es necesario porque el puerto entra en un estado TIME_WAIT para garantizar que se transfieren todos los datos.

Si dos sockets están vinculados a la misma interfaz y puerto y son miembros del mismo grupo de multidifusión, los datos se entregarán a ambos sockets.

Supongo que un uso alternativo sería un ataque de seguridad para tratar de interceptar datos.

( Fuente )


Para UDP: SO_REUSEADDR se usa para multidifusión

Es posible que más de un proceso se vincule al mismo puerto UDP SOCK_DGRAM si bind () va precedido de:

int one = 1; setsockopt (calcetín, SOL_SOCKET, SO_REUSEADDR, y uno, tamaño de (uno))

En este caso, todos los datagtwigs UDP de multidifusión o difusión entrantes destinados al puerto compartido se entregan a todos los sockets vinculados al puerto.

( Fuente )

El otro uso principal es permitir que varios sockets se bind() al mismo puerto en UDP. Es posible que no piense que podría aparecer, pero a veces es posible que varias aplicaciones deseen escuchar en direcciones de difusión / multidifusión con un número de puerto determinado. También permite que uno se una a la dirección del comodín, mientras que también se vincula a una dirección específica. Por ejemplo, Apache podría vincularse a *: 80 y 10.11.12.13:80