Вобщем пишу прогу она работает с сетью через сокеты,но там потребовалось защита от ддоса тоесть без нее можно сервер положить спрутом вот и я что то не могу придумать как ограничить количество подключений с 1 ипа помогите плиз!
В общем, я думаю, что нужно создать массив записей вида: Code: record ip: string; timeout: integer; end; И при подключении клиента проверять: если его IP не содержится в массиве, то разрешить подключение, его IP занести в массив, в timeout внести текущее время. Если ip содержится в массиве, то отнимаем от текущего времени значение timeout, если оно больше определенного значения, разрешаем подключение и обновляем данные, иначе запрещаем. Это в обобщенном виде, на практике может оказаться немного сложней.
Тогда вопрос как отключить клиента ? типа если Socket.ActiveConnections > 100 then ???? Socket.Close не помогает
ServerSocket1.Socket.Connections[id].Close; Где id - порядковый номер клиента. Блин, не люблю я эти компоненты сетевые, неудобные они.
Хочешь не хочешь , ты ВСЕГДА юзаешь winsock2 , только подключаешь заголовочные файлы второй или первой версии.
> вот и я что то не могу придумать как ограничить количество подключений с 1 ипа помогите плиз! возможно будет логичным предположтиь что стоит дисконектить клиента, если он уже подключен? сравнить его айпи с теми что уже подключены? я незнаю как там у вас все в делфи с тысячей дибильных компонентов где подключение - это визаульная часть формы приложения, но я бы лично в потоке сервера записывал бы айпи и не создавал бы потом обслуж. клиента если айпи уже есть, скажем в массиве