Закрытие потерянных TCP-соединений на удивление сложно в Linux. Этот вопрос поднимался здесь, здесь, здесь и здесь ; однако ни один из подходов не работал для меня.
Вызов close() не работает, потому что нет связанного процесса. Установка CurrPorts не будет работать, потому что я не на Windows. Подход к установке значения tcp_max_orphans равным нулю не увенчался успехом (и я предполагаю, что даже если бы он это сделал , это не могло бы немедленно разорвать соединение). Запуск tcpkill не работает, потому что нет активного трафика. Запуск killcx завершается сбоем no response from child, operation may have failed завершилась неудачно Сбой tcp_killer от Google с Socket not found for connection . Установка короткого тайм-аута и ожидание его не вариант, потому что я должен немедленно повторно использовать IP и порт.
На протяжении всего этого netstat -tp постоянно показывает, что соединение живо:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 156 localhost:54494 localhost:xmpp-client FIN_WAIT1 -
Какой способ немедленно убить это TCP соединение?
