Я делаю следующее:
- Откройте прослушивающий TCP-сокет.
- Установите ЗАДЕРЖКУ на 10
- Открыть 50 соединительных сокетов (используется неблокирующее соединение)
- опрашивать прослушиваемый сокет и принимать соединения
- Соединения, способные передавать какие-либо данные, закрываются
Что я вижу, так это то, что все 50 соединений успешны, однако POLLIN на сокете прослушивания сигнализируется только ~ 30 раз. Это означает, что принимается только 30 подключений.
Когда я запускаю netstat в таком состоянии, я не вижу зависших УСТАНОВЛЕННЫХ соединений. Есть несколько соединений, зависших в состоянии TIME_WAIT, но это не имеет значения.
Вышеупомянутое наблюдалось в Linux, однако подобное поведение, по-видимому, происходит и в FreeBSD и NetBSD.
У кого-нибудь есть опыт с подобными вещами?