Quando um cliente inicia uma desconexão do servidor, há uma troca entre cliente e servidor para informar o estado da desconexão. Quando o processo termina, o socket do cliente fica no estado TIME_WAIT por um tempo variável. Este é um comportamento normal; em sistemas operacionais Windows, esse tempo é de aproximadamente 4 minutos por padrão.
Você pode reduzir ou eliminar esse comportamento, com cuidado, usando as seguintes alternativas.
Regedit
Você pode reduzir o valor de TIME_WAIT usando o Regedit do Windows.
1. Abra o Regedit e acesse as subchaves de registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters.
2. Crie um novo valor REG_DWORD chamado TcpTimedWaitDelay.
3. Defina o valor em segundos. Exemplo: se você definir 5, o TIME_WAIT aguardará no máximo 5 segundos.
4. Salve e reinicie o sistema.
LINGER
Outra opção para evitar o estado TIME_WAIT é usar a opção de socket SO_LINGER. Quando habilitada, em vez de fechar a conexão graciosamente, o cliente redefine a conexão, evitando o estado TIME_WAIT.
Você pode habilitar essa opção usando a propriedade LingerState, que tem valor -1 por padrão. Se definir zero, a conexão será reiniciada ao desconectar do socket sem Timeout.
Esta opção é provavelmente a menos recomendada e deve ser usada apenas como último recurso.
