Що таке so_linger?

Параметр Солінгера встановлює затримку в секундах, протягом якої шлюз очікує передавання даних перед закриттям сокета після отримання виклику для закриття сокета.

Типовою причиною встановлення нульового тайм-ауту SO_LINGER є щоб уникнути великої кількості з’єднань у стані TIME_WAIT, об’єднуючи всі доступні ресурси на сервері.

Опція сокета SO_KEEPALIVE призначена для дозволити програмі вмикати пакети підтримки активності для з’єднання через сокет. Щоб запитати статус цього параметра сокета, викличте функцію getsockopt.

Параметр сокета SO_REUSEADDR дозволяє сокету примусово прив’язуватися до порту, який використовується іншим сокетом. Другий сокет викликає setsockopt із параметром optname, встановленим на SO_REUSEADDR, і параметром optval, встановленим на логічне значення TRUE перед викликом bind на тому самому порту, що й вихідний сокет.

Значення SO_REUSEADDR таке логічне значення. У C логічне значення має більше одного біта, і якщо будь-який біт встановлено, він вважається істинним. Тобто 0 означає false, а все інше означає істину.

Параметр Солінгера встановлює затримку в секундах, протягом якої шлюз очікує передавання даних перед закриттям сокета після отримання виклику для закриття сокета.