- Код: Выделить всё
Socket.Bind('0.0.0.0','57777');
Socket.setLinger(true,10000);
проверяю есть ли новый клиент:
- Код: Выделить всё
repeat
if Socket.CanRead(100) then
begin
......
end;
until Terminated;
Но в при наступлении какого-то момента Socket.CanRead(100) всегда стает true и цикл "зацыкливает". Видимо срабатывают ограничения ОС. Но ошибок никаких нет в Socket.LastError.
На линухе это достигается примерно на 460 коннекте.
На винде такого дождаться не могу. Но не факт, видимо и тут есть ограничение, просто, число побольше.
Как отловить такой момент?
Добавлено спустя 1 час 46 минут 22 секунды:
Нашел как изменить лимиты в системе.
Просмотр текущих лимитов:
- Код: Выделить всё
ulimit -n
Изменять нужно файл
- Код: Выделить всё
vi /etc/security/limits.conf
Но это не решает саму проблему. Нужно понимать, что программа уперлась в лимит.