Embora eu não entenda toda a semântica (estou procurando no lugar errado ou faltando a documentação), acredito que por um certo tempo após fechar uma conexão (talvez definida por SO_LINGER
), nenhum processo pode abrir um novo socket com os mesmos detalhes, a menos que eles tenham SO_REUSEADDR
set.
Isso evita que alguém reconecte um segundo depois que uma conexão é fechada e o processo tendo que lidar com pacotes que foram feitos para o processo anterior, como eu o entendo.
man 7 socket
não documenta isso como parte de SO_REUSEADDR
, o que dificultou essa resposta.