Для TCP основная цель - перезапустить закрытый / уничтоженный процесс по тому же адресу.
Флаг необходим, потому что порт переходит в состояние TIME_WAIT
, чтобы обеспечить передачу всех данных.
Если два сокета связаны с одним и тем же интерфейсом и портом и являются членами одной и той же многоадресной группы, данные будут доставлены в оба сокета.
Я полагаю, что альтернативным вариантом будет атака безопасности, чтобы попытаться перехватить данные.
( Источник )
Для UDP , SO_REUSEADDR
используется для многоадресной рассылки.
Более одного процесса могут связываться с одним и тем же SOCK_DGRAM
портом UDP, если bind()
предшествует:
int one = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
В этом случае каждая входящая многоадресная или широковещательная UDP-датаграмма предназначена для
общий порт доставляется всем сокетам, привязанным к порту.
( Источник )