Pull to refresh

Comments 3

Для общения со всеми машинами сети хорошо подходит pdsh
Я в своём софте обычно ставлю таймер и если после 200...500 мС после закрытия сокета, он ещё не закрыт, то делаю аборт, что гарантировано и мгновенно освобождает сокет. Да, приходится хранить список закрытых сокетов и периодически по нему проходить, чтобы закрыть зависшие. Зато никаких проблем. Принудительное закрытие сокета зависит от ОС/языка/библиотеки. У некоторых явно такая функция есть, а у некоторых приходится сначала опции сокета выставлять (всякие там linger off и тому подобное), а потом делать повторный close, который приведёт к мгновенному закрытию.
Да и, кстати, для открытия сокетов такой же подход — если accept не привел к открытию сокета за установленный таймаут, то сокет принудительно закрывается. Стандартные таймауты очень большие и сервер легко зафлудить. Когда писал нагруженный сервер, то там вообще для полу-открытых / полу-закрытых сокетов таймаут зависел от количества ожидающих этих самых сокетов. Если много таких сокетов, то таймаут уменьшался вплоть до 50 мС.
Sign up to leave a comment.

Articles