CLOSE_WAIT
означает, что соединение было закрыто удаленным узлом, но сокет ожидает закрытия локальным приложением.Таким образом, вы этого не делаете.
Вам необходимо проверить, что вы правильно обрабатываете EOS, то есть закрыв сокет, при любых обстоятельствах, где он может возникнуть, и то же самое IOExceptions
в любой операции сокета - вы должныответьте на все из них, кроме SocketTimeoutException
, закрыв сокет.Вы также должны убедиться, что сокеты закрыты в finally
блоках.