Gdy klient inicjuje rozłączenie z serwerem, dochodzi do wymiany między klientem a serwerem w celu poinformowania o stanie rozłączenia. Po zakończeniu procesu połączenie gniazda klienta przyjmuje stan TIME_WAIT przez zmienny czas. Jest to normalne zachowanie; w systemach Windows czas ten domyślnie wynosi około 4 minut.
Możesz zredukować lub wyeliminować to zachowanie — rób to ostrożnie — korzystając z poniższych możliwości.
Regedit
Wartość TIME_WAIT możesz zmniejszyć za pomocą Edytora rejestru Windows
1. Otwórz Regedit i przejdź do podkluczy rejestru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters.
2. Utwórz nową wartość REG_DWORD o nazwie TcpTimedWaitDelay
3. Ustaw wartość w sekundach. Przykład: jeśli ustawisz wartość 5, TIME_WAIT będzie czekać maksymalnie 5 sekund.
4. Zapisz zmiany i uruchom ponownie system.
LINGER
Inną opcją unikania stanu TIME_WAIT jest użycie opcji gniazda SO_LINGER. Jeśli jest włączona, zamiast zamykać połączenie z wdziękiem, klient resetuje połączenie, co pozwala uniknąć stanu TIME_WAIT.
Tę opcję możesz włączyć za pomocą właściwości LingerState, która domyślnie ma wartość -1. Jeśli ustawisz wartość zero, połączenie zostanie zresetowane przy rozłączaniu gniazda bez limitu czasu.
Ta opcja jest prawdopodobnie najmniej zalecana i należy jej używać wyłącznie w ostateczności.
