HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Помоги с сокетами на делфе =)
  #1  
Старый 11.06.2007, 13:44
zl0y
Banned
Регистрация: 13.09.2006
Сообщений: 523
С нами: 10346786

Репутация: 925


Question Помоги с сокетами на делфе =)

Вобщем пишу прогу она работает с сетью через сокеты,но там потребовалось защита от ддоса тоесть без нее можно сервер положить спрутом вот и я что то не могу придумать как ограничить количество подключений с 1 ипа помогите плиз!
 
Ответить с цитированием

  #2  
Старый 11.06.2007, 13:55
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

То есть на делфне пишется серверная часть? Сокеты реализуются через компонент или на winsock?
 
Ответить с цитированием

  #3  
Старый 11.06.2007, 14:01
zl0y
Banned
Регистрация: 13.09.2006
Сообщений: 523
С нами: 10346786

Репутация: 925


По умолчанию

Не делфе пишуться оби проги. Обе используют TClient
 
Ответить с цитированием

  #4  
Старый 11.06.2007, 14:10
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

В общем, я думаю, что нужно создать массив записей вида:
Код:
record
  ip: string;
  timeout: integer;
end;
И при подключении клиента проверять: если его IP не содержится в массиве, то разрешить подключение, его IP занести в массив, в timeout внести текущее время. Если ip содержится в массиве, то отнимаем от текущего времени значение timeout, если оно больше определенного значения, разрешаем подключение и обновляем данные, иначе запрещаем. Это в обобщенном виде, на практике может оказаться немного сложней.
 
Ответить с цитированием

  #5  
Старый 11.06.2007, 14:18
zl0y
Banned
Регистрация: 13.09.2006
Сообщений: 523
С нами: 10346786

Репутация: 925


По умолчанию

Тогда вопрос как отключить клиента ? типа если Socket.ActiveConnections > 100 then ????
Socket.Close не помогает
 
Ответить с цитированием

  #6  
Старый 11.06.2007, 14:50
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

ServerSocket1.Socket.Connections[id].Close;

Где id - порядковый номер клиента. Блин, не люблю я эти компоненты сетевые, неудобные они.
 
Ответить с цитированием

  #7  
Старый 11.06.2007, 14:52
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами: 10088966

Репутация: 646


По умолчанию

Цитата:
Функция Accept из стандартной библиотеки сокетов позволяет серверу извлечь из очереди соединений информацию о подключившемся клиенте и создать сокет для его обслуживания. Эти действия выполняются безусловно, для любых подключившихся клиентов. Если сервер допускает подключение не любых клиентов, а только тех, которые отвечают некоторым условиям (для протокола TCP эти условия могут заключаться в том, какие IP-адреса и какие порты допустимо использовать клиентам), сразу после установления соединения его приходится разрывать, если клиент не удовлетворяет этим условиям. Для упрощения этой операции в WinSock 2 предусмотрена функция WSAAccept
Вот это рульная штука. WinSock 2 вообще рулит
 
Ответить с цитированием

  #8  
Старый 11.06.2007, 14:55
gemaglabin
Banned
Регистрация: 01.08.2006
Сообщений: 725
С нами: 10408706

Репутация: 4451


По умолчанию

Хочешь не хочешь , ты ВСЕГДА юзаешь winsock2 , только подключаешь заголовочные файлы второй или первой версии.
 
Ответить с цитированием

  #9  
Старый 11.06.2007, 18:08
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
С нами: 11042306

Репутация: 2726


По умолчанию

> вот и я что то не могу придумать как ограничить количество подключений с 1 ипа помогите плиз!

возможно будет логичным предположтиь что стоит дисконектить клиента, если он уже подключен? сравнить его айпи с теми что уже подключены?
я незнаю как там у вас все в делфи с тысячей дибильных компонентов где подключение - это визаульная часть формы приложения, но я бы лично в потоке сервера записывал бы айпи и не создавал бы потом обслуж. клиента если айпи уже есть, скажем в массиве
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс для работы с сокетами на С++ _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 32 10.09.2009 10:51
Косяки с сокетами и непонятки с пониманием http-запросов je0n PHP 4 28.06.2006 02:56



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.