Ferroman
Окт. 22, 2009 20:04:03
Вопрос такой.
Есть самописный сервер на socket, к нему обращается клиент, отправляет данные.
После получения данных надо закрыть подключение на сервере, но клиенту об этом не сообщать.
Как это можно сделать?
Андрей Светлов
Окт. 22, 2009 21:07:14
В смысле? close без shutdown?
alrond
Окт. 23, 2009 01:15:28
По типу iptables tarpit, только на верхних уровнях?
Ferroman
Окт. 23, 2009 16:15:41
Не совсем, если я сделаю close, то, насколько я понимаю, клиент тоже “отвалится”.
alrond
Именно.
ZZZ
Окт. 23, 2009 17:31:36
Если не секрет, зачем такое понадобилось?
P.S. А может задействовать os.system('iptables … TARPIT') (ну или что-нить близкое)?
Ferroman
Окт. 23, 2009 18:32:59
Не секрет - способ избежать подбора паролей к аккаунтам создавая большие таймауты, но с освобождением своих ресурсов.
Не пойдёт, надо кроссплатформенное, или, как минимум, под мастдай.
ZZZ
Окт. 23, 2009 21:43:58
Думаю, что на таком уровне ничего нет. По крайней мере я не встречал точно.
ИМХО, надо брать Си и писать для сетевого ядра конкретной ОСи. Кстати нечто подобное не помешает сообществу.
Ferroman
Не пойдёт, надо кроссплатформенное, или, как минимум, под мастдай.
Ну да, если говорить об освобождении своих ресурсов, то точно не пойдёт. :-)))
Lexander
Окт. 23, 2009 23:44:41
Ferroman
Не секрет - способ избежать подбора паролей к аккаунтам создавая большие таймауты
А не проще ли использовать стандартные методы? Ограничить кол-во попыток, например.
pasaranax
Окт. 24, 2009 00:08:46
А что если запускать соединение отдельным потоком, а потом убивать его девятым сигналом?
Андрей Светлов
Окт. 24, 2009 02:35:32
Из стандартного socket такого не выжать.
На винде closesocket неявно вызывает shutdown. Сильно облегчает программирование - но только не в вашем случае.