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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2009, 09:29   #231
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Самой последней строчкой в FormDestroy можно написать sleep(2000); - это затянет отключение на 2 секунды, и сообщение пролезет.
Через цикл или sleep я могу сделать, это я писал в первых своих постах, ну да ладно. Вопрос решил другим способом: я написал систему регистрации в которой исключил дублирование ников, подключение и отвал клиентов я контролирою на стороне сервера и рассылаю клиентам.
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 25.06.2009, 16:52   #232
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Раз все решилось, значит так тому и быть, а вообще sleep в любой процедуре последней строчкой даст задержку ее конца, в FormDestroy, например, форма не уничтожится еще 2 секунды, за это время сообщение точно дойдет до сервера и тот отравит системный ответ, что все получено, и спустя 2 секунды форма уничтожится, закрыв сокет. Просто если паузы не делать, то зависит от пинга сети как быстро сообщение дойдет до сервера.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 26.06.2009, 10:20   #233
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Возникла проблема:
когда становиться "много" пользователей (больше 4х) некоторым отправляется двойной список клиентаов, в чем дело?
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 26.06.2009, 15:04   #234
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от spirit-ua Посмотреть сообщение
Возникла проблема:
когда становиться "много" пользователей (больше 4х) некоторым отправляется двойной список клиентаов, в чем дело?
Такого не заметил, ...может быть переменная StrUserList не очищена перед составлением очередного списка? ...это на сервере, ...или у клиента не прописано UserListView.Items.Clear; ...но как-то странно, то правильно отображается, то нет. Опишите подробно, как создаются клиенты, на одной машине или на разных.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 26.06.2009, 16:54   #235
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Такого не заметил, ...может быть переменная StrUserList не очищена перед составлением очередного списка? ...это на сервере, ...или у клиента не прописано UserListView.Items.Clear; ...но как-то странно, то правильно отображается, то нет. Опишите подробно, как создаются клиенты, на одной машине или на разных.
У меня есть регистрация клиентов, и когда пользователь прицепился для прохождения регистрации на сервере он добавляется в список клиентов, а остальным список рассылается без неавторизированых пользователей.
Я сменил код в двух места на сервере
1.
Код:
 // Isxodnik ------------
 //If UserMas[i].Rec=False then ContList:=1;
 //StrUserList := StrUserList + IntToStr(UserMas[i].Image) + UserMas[i].Name + Chr(152);
 // Isxodnik ------------

 // Main
 If UserMas[i].Rec = True then StrUserList := StrUserList + IntToStr(UserMas[i].Image) + UserMas[i].Name + Chr(152);
 // Main     ------------
2.
Код:
 // Isxodnik ------------
 // ServerSocket.Socket.Connections[i].SendText('2'+StrUserList);
 // Isxodnik ------------

 // Main
 If UserMas[i+1].Rec = True then ServerSocket.Socket.Connections [i].SendText('2'+StrUserList); 
 // Main
Таким образом я отправляю список клиентов только авторизированым пользователям и у меня некоторым приходит 2, или жаже 3-я строка пользователей...
Если возращаю измениние 1 в исходное положение все работает, но список отправляется njm тем клиентам которые вошли раньше чем неизвестный клиент, после него уже никому список не проходит...
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 26.06.2009, 21:47   #236
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос

Вижу и у spirit-ua тоже дублируются ники. Возникла такая проблема. Есть человек который убивает сервер чата таким образом:
подключаешься отключаешься к порту сервера с частатой 100 раз в сек и он замучивается всем список юзеров отсылать в итоге вообще падает. Что-то связанное с Эксплойт. Как жащититься от такого? И как отсылать всем не весь список юзеров, а только того юзера что отключился или подключился?

Последний раз редактировалось Shouldercannon; 26.06.2009 в 22:14.
Shouldercannon вне форума Ответить с цитированием
Старый 28.06.2009, 14:59   #237
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Ничего сверхъестественного, защиты у программы просто нет, поскольку это демонстрация ) Теперь будем думать, какие у вас есть предложения? ...у меня они есть, но хочется научить логически мыслить именно вас, тех кому эта тема интересна.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.06.2009, 20:51   #238
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Смотрел бан систему и вот что непонравилось. После того как IP опознан начинается отсылка команды забаненому
Код:
// обработка забаненых IP
For n:=0 to 255 do
  Begin
    If BanMas[n] = ServerSocket.Socket.Connections[i-1].RemoteAddress then
      ServerSocket.Socket.Connections[i-1].SendText('4');
  end;
и эта отсылка начинает слаться ежесекундно на клиент тем самым грузит. Как от этого избавиться?
Shouldercannon вне форума Ответить с цитированием
Старый 28.06.2009, 22:09   #239
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

А где конкретно это записано? ...кроме того, от подключения и отключения может спасти еще изменение процедур TForm1.ServerSocketClientConnect и TForm1.ServerSocketClientDisconnect , в них прямой вызов UpdDo:=True; и обновление массива и списка от 1 до 255, и все это по таймеру, слишком быстро, нужно замедлить, и проверять по числу каналов, но не по всему.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.06.2009, 22:46   #240
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Записано в ServerTimer. После обработки шлётся команда с сервера на клиент и ради любобытсва в обработчике команды клиента на бан я сделал добавление новой строки в чат (бан) и когда комада обработалась в чат ежесекундно писалось бан.
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