От 18 апреля 2015 г., 17:00:53 в fido7.ru.linux.chainik ты писал: SEL>> >:) И, если порт принадлежит соединению в TIME-WAIT, SEL>> FIN_WAIT2, ..., lsof обнаружит на нём "пустоту"? Или есть SEL>> варианты? EP> su? Для CLOSE-WAIT работает, LAST-ACK -- упустил. Для EP> TIME-WAIT и прочих проверить не могу -- у меня нету. EP> Hо я, теперь, не понимаю другого. TIME-WAIT это для исходящих? EP> Hо для исходящих это не должно быть проблемой -- открывается EP> любой свободный. Открывать для исходящих всегда один и тот же EP> порт -- это java-way или именно этот код так делает?
Если память меня не подводит TIME-WAIT - это для того, кто соединение закрывает (кто сокет закрывает или сам безвременно умирает).
Hа счёт java-way, да и насчёт POSIX-way (для тех, кто боится SO_REUSEADDR). IMHO, единственный "платформенно независимый" путь избежания состояния TIME-WAIT для сервера - это побуждать клиента разрывать соединение. Однако, при сетевых проблемах, это может приводить к длительному процессу завершения сервера (в просторечии "зависанию"). Если в этот момент такой "платформенно независимый" сервер убить - получим TIME-WAIT и невозможность повторного запуска в течении примерно 2*MSL секунд :)
Windows/Solaris/Linux/FreeBSD-way путь обеспечения возможности быстрого рестарта - это использовать специальные флажки.
Как вариант, для Linux/FreeBSD можно настраивать TCP при помощи sysctl.
-- Успехов, Сергей Леонтьев. E-mail: lse@CryptoPro.ru