diferença entre “endereço em uso” com bind () no Windows e no Linux - errno = 98

Eu tenho um pequeno servidor TCP que escuta em uma porta. Durante a depuração, é comum que eu faça CTRL-C no servidor para interromper o processo.

No Windows, posso reiniciar o serviço rapidamente e o soquete pode ser recuperado. No Linux, tenho que esperar alguns minutos antes que o bind () retorne com sucesso

Quando o bind () está falhando, ele retorna errno = 98, endereço em uso.

Eu gostaria de entender melhor as diferenças nas implementações. O Windows com certeza é mais amigável para o desenvolvedor, mas duvido que o Linux esteja fazendo a "coisa errada".

Meu melhor palpite é que o Linux está aguardando até que todos os possíveis clientes detectem que o soquete antigo está quebrado antes de permitir a criação de novos soquetes. A única maneira de fazer isso é aguardar o tempo limite

existe uma maneira de mudar esse comportamento durante o desenvolvimento no Linux? Espero duplicar a maneira como o Windows faz isso

questionAnswers(1)

yourAnswerToTheQuestion