Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2010, 15:59   #381
morfey
 
Регистрация: 18.05.2010
Сообщений: 7
По умолчанию

Уважаемый Beermonza как нам организовать анти-флуд я думаю надо поставить таймер что бы к примеру юзер мог делать отправку сообщения каждые 3 секунды или 4

И еще вопрос ваши методы что выше только действую на вашем чате ??? или я могу их применить в другом чате где есть компоненты ServerSocket ClientSocket


Или выводить табличку типа
ПРЕДУПРЕЖДЕНИЕ от антифлуд системы вы регулярно превышаете допустимое значения частоты или длины сообщений дальнейшие нарушения могут привести к временному запрету на отправку сообщений

если продолжат флудить значет наказывают юзера отправлять сообщения ваши сообщения будут видны только вам еще 300 секунд

но это я так главное сделать таймер 3-4 секунды на отправку

Последний раз редактировалось morfey; 24.05.2010 в 16:11.
morfey вне форума Ответить с цитированием
Старый 24.05.2010, 16:36   #382
Kappi4
 
Регистрация: 16.05.2009
Сообщений: 4
Вопрос По русски)

Вообщем, смысл того что я хотел написать...Дубль 2 : по русски)
Значит, когда отправляеш сообщение с сервера то как и положено все клиенты его читают...а у самого серва,то что он отправил, не отображается в мемо. Если, самому себе отправляеш то тогда он видит, а если "всем", то нет.
Отсюда вопрос: что и где надо вписать чтоб все работало как надо
з.ы много раз перепроверял...запускал исходники, скачанные тут...

Последний раз редактировалось Kappi4; 24.05.2010 в 16:40.
Kappi4 вне форума Ответить с цитированием
Старый 24.05.2010, 18:39   #383
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от morfey
Уважаемый Beermonza, как нам организовать анти-флуд? Я думаю, надо поставить таймер чтобы, к примеру, юзер мог делать отправку сообщения каждые 3 секунды или 4.

И еще вопрос: ваши методы, что выше, только действую на вашем чате ??? ...или я могу их применить в другом чате, где есть компоненты ServerSocket ClientSocket ?

Или выводить табличку типа "ПРЕДУПРЕЖДЕНИЕ" от анти-флуд системы: "вы регулярно превышаете допустимое значения частоты или длины сообщений, дальнейшие нарушения могут привести к временному запрету на отправку сообщений" ...если продолжат флудить, значит наказывают юзера, отправляют сообщения: "ваши сообщения будут видны только вам еще 300 секунд".
Но это я так, ...главное сделать таймер 3-4 секунды на отправку.
Все приемы работают везде, где используются вышеназванные сокеты.

Чтобы устранить проблемы с флудерством, нужно использовать метод дискретной временной блокировки клавиши "Отправить сообщение" или ее кода на отправку пакета. Смотрите выше реализацию бана, но, вместо длительной блокировки используйте основной таймер сервера еще и в качестве счета времени блокирования флудеров.
Заведите запись в типе TUserList, например WaitTime: Word. Эта запись будет следить за интервалом между сообщениями. Смотрите процедуру обработки пакетов ServerTimerTimer, Case 0: ...введите условие: если значение UserMas[i].WaitTime меньше некоторого допустимого интервала, то отправить этому клиенту пакет блокировки, а счетчик WaitTime обнулить.
В конце основного цикла по числу каналов (переменная i) нужно прописать счет для UserMas[i].WaitTime (прибавляем единицу) с проверкой на переполнение (условие: если превышено максимальное значение, то обнулять). Тут же условие разблокирования, если по условию счетчик отсчитал положенный таймаут нарушителя, кроме того при состоянии блокирования, т.е. вам нужно продолжение кода статуса UserMas[i].Status, ...возьмите число отвечающее за состояние "Таймаут", ставьте его при блокировке, при разблокировании вернете предыдущий статус (если они будут реализованы вами).
Отсылая команду блокирования можно кроме кода команды отправлять и соответствующее сообщение. Так же нужно "научить" клиента понимать команду (смотрите предыдущие модернизации).

Цитата:
Сообщение от Kappi4
В общем, смысл того, что я хотел написать...Дубль 2 : по русски)
Значит, когда отправляешь сообщение с сервера, то, как и положено, все клиенты его читают...а у самого серва, то, что он отправил, не отображается в мемо. Если самому себе отправляешь, то тогда он видит, а если "всем", то нет.
Отсюда вопрос: что и где надо вписать чтоб все работало как надо
з.ы много раз перепроверял...запускал исходники, скачанные тут...
Смотрите код на кнопку "Отправить", ...в любом случае после отправки пакета идет рукописная процедура ShowColorMassage, она-то и отображает содержимое в поле:
Код:
ShowColorMassage('0'+FontName+FontSize+FontColor+'['+TimeToStr(Time)+']  '+NikEdit.Text+':  '+TextEdit.Text, 0);
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 24.05.2010, 18:46   #384
Kappi4
 
Регистрация: 16.05.2009
Сообщений: 4
По умолчанию

Спасибо, за своевременный ответ...будем разбираться)
з.ы. А как сделать еще чтоб время показывало, уральское(+2ч к московскому)

Последний раз редактировалось Kappi4; 24.05.2010 в 19:53.
Kappi4 вне форума Ответить с цитированием
Старый 24.05.2010, 19:54   #385
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

morfey вот тебе антифлуд система
Beermonza в данном чате можно пересылать лички в отдельном окне?
Вложения
Тип файла: rar AntiFlood.rar (6.4 Кб, 31 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 24.05.2010, 20:19   #386
morfey
 
Регистрация: 18.05.2010
Сообщений: 7
По умолчанию

Shouldercannon спасибо большое мдя я не понял для чего система анти флуда ваша я делаю чат а там в коде не слово про него поясните подробней пожалуйста
morfey вне форума Ответить с цитированием
Старый 24.05.2010, 20:30   #387
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Kappi4 Посмотреть сообщение
Спасибо, за своевременный ответ...будем разбираться)
з.ы. А как сделать еще чтоб время показывало, уральское(+2ч к московскому)
Время показывает то, что есть в ОС, настройте правильно часы в системе и в чате будет такое же.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 24.05.2010, 21:21   #388
morfey
 
Регистрация: 18.05.2010
Сообщений: 7
По умолчанию

Не черта не пойму, вы все здесь загадками говорите
понимаю вот кнопка, обработал ее ,жмешь и бан что трудно так помочь объяснить ?меня запутали вообще ,я делаю чат у меня сервер от дельно
morfey вне форума Ответить с цитированием
Старый 24.05.2010, 22:05   #389
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от morfey Посмотреть сообщение
Не черта не пойму, вы все здесь загадками говорите
понимаю вот кнопка, обработал ее ,жмешь и бан что трудно так помочь объяснить ?меня запутали вообще ,я делаю чат у меня сервер от дельно
Ответ:

Цитата:
Сообщение от Beermonza
... На самом деле программирование большой труд, муторный и тяжелый, нужно много помнить и "работать головой" каждую секунду.
Вы мыслете на уровне кнопки, нажал и ап! ...для того, чтобы было "ап!" нужно все запрограммировать и у сервера и у клиента. Чтобы "вот кнопка, обработал ее ,жмешь и бан" - это запретить серверу рассылать остальным сообщения забаненного, он как слал так и будет слать сообщения и ничего ему не сделать одной кнопкой, поскольку она принадлежит только серверу. Можно одним нажатием просто "выпнуть" пользователя, это да.
А как заставить оставаться на связи, но при этом не мочь ничего отсылать по случаю бана, данного за флуд на время - это я описал подробно во всех аспектах и у сервера и у клиента. Дать готовый код - написать за вас, ...у меня нет задачи делать чужую работу, я буду помогать теоретически и структурно, ...если так не годится для вас, извините.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 26.05.2010, 21:24   #390
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Хочу реализовать систему запрещающую входить в чат юзерам с определённым IP. Для этого сначала получаем IP подключающегося
Код:
NewIP := ServerSocket.Socket.Connections[i - 1].RemoteAddress
Далее сравниваем его с разрешёнными диапазонами
Код:
...
function IPtoDWORD(const s: string):DWORD;
var
L: TStringList;
b: packed array [0..3] of byte;
i: Integer;
begin
Result := 0;
  L := TStringList.Create;
    try
      L.Delimiter := '.';
        L.DelimitedText := s;
          for i := 0 to 3 do
            b[3 - i] := StrToInt(L[i]);
              Result := pdword(@b[0])^;
    finally
      L.Free
    end;
end;
...
if (NewIP >= IPtoDWORD('192.168.0.0')) and (NewIP <= IPtoDWORD('192.168.0.255')) then
  //Пускаем в чат
    else
      ServerSocket.Socket.Connections[i - 1].SendText('запрет'); //Отсылаем команду запрета
        ServerSocket.Socket.Connections[i - 1].Close; //Закрываем канал
          if (NewIP >= IPtoDWORD('193.168.0.0')) and (NewIP <= IPtoDWORD('193.168.0.255')) then
            //Пускаем в чат
            if (NewIP >= IPtoDWORD('194.168.0.0')) and (NewIP <= IPtoDWORD('194.168.0.255')) then
              //Пускаем в чат
                if (NewIP >= IPtoDWORD('195.168.0.0')) and (NewIP <= IPtoDWORD('195.168.0.255')) then
                  //Пускаем в чат
...
Способ немного громоздкий. Можно сделать его попроще с загрузкой диапазонов из файла?
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обновление в блоге - Создание клиент-сервера Pblog Обсуждение статей 0 03.10.2007 17:12
обновление в блоге - Диплом. Создание и продвижение сайта - готовь сани летом, а дипл Pblog Обсуждение статей 0 31.08.2007 20:00
обновление в блоге - USB Холодильник Pblog Обсуждение статей 0 25.06.2007 14:13
обновление в блоге - О ярлыках Pblog Обсуждение статей 0 27.05.2007 03:17