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