Здравствуйте, darkserj, Вы писали:
D>Приветствую. D>Возник вопрос, как мне сбросить соединения еще не прошедшие accept?
D>Есть пул потоков которые обрабатывают поступившие соединения. D>Если все потоки заняты хочется закрыть соединение, чтобы клиент обратился к следующему по списку серверу. D>Сейчас приходится получать дескриптор после accept и закрывать его close. D>Есть ли более правильные решения? Платформа Linux и MacOS X.
Старые звери вроде sendmail закрывают в этом случае слушающий сокет.
Но если проблема кратковременная, надо просто не делать accept(), а подождать освобождения треда. Потому что в этом случае клиенту лучше подождать, чем нарываться на немедленный отказ.
При более длительном (для каждой цели длительность считается по-своему) — закрывать таки слушающий сокет.
В SysV интерфейсе (TLI/XTI) есть вызов закрыть без принятия, но в BSD sockets (склонированном и в Linux) такого нет.