Re: Сброс соединения TCP
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 31.07.13 13:12
Оценка: 4 (1)
Здравствуйте, darkserj, Вы писали:

D>Приветствую.

D>Возник вопрос, как мне сбросить соединения еще не прошедшие accept?

D>Есть пул потоков которые обрабатывают поступившие соединения.

D>Если все потоки заняты хочется закрыть соединение, чтобы клиент обратился к следующему по списку серверу.
D>Сейчас приходится получать дескриптор после accept и закрывать его close.
D>Есть ли более правильные решения? Платформа Linux и MacOS X.

Старые звери вроде sendmail закрывают в этом случае слушающий сокет.
Но если проблема кратковременная, надо просто не делать accept(), а подождать освобождения треда. Потому что в этом случае клиенту лучше подождать, чем нарываться на немедленный отказ.
При более длительном (для каждой цели длительность считается по-своему) — закрывать таки слушающий сокет.

В SysV интерфейсе (TLI/XTI) есть вызов закрыть без принятия, но в BSD sockets (склонированном и в Linux) такого нет.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.