![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#121 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
![]() Цитата:
Но при закрытии соединения есть подвох, юзер возвращается обратно в чат благодаря системе переподключения ![]() Последний раз редактировалось Shouldercannon; 01.05.2009 в 18:40. |
|
![]() |
![]() |
![]() |
#122 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Естественно ServerSocket.Socket.Connections[i].Close в своем оригинале будет выдавать ошибку, поскольку это пример, в котором i - переменная, которая должна содержать фактический номер канала, который нужно узнать по списку пользователей, образом, уже упоминавшимся выше, в частности на использование привата. Разумеется, я не буду всегда приводить конкретный код для пожелавшего его получить, ...только пример и теоретические знания, чтобы научить самостоятельно находить решения.
Теперь, ...если у вас используется система переподключения, которую я описал выше, то ничего подобного на повторное подключение "откинутого" сервером клиента я не наблюдаю. Возможно что-то в коде вы исправили. Процедура Close серверного сокета корректно отключает канал, это не относится с ошибкам сокета, и посему процедура переподключения просто не срабатывает. Если имеется в виду ручное переподключение посредством клавишь, то у вас должна быть реализована система бана.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 01.05.2009 в 23:56. |
![]() |
![]() |
![]() |
#123 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
![]() Цитата:
И в правильном ли я месте поставил активацию тамера при дисконекте? Код:
|
|
![]() |
![]() |
![]() |
#124 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Место старта таймера коннекта выбрано неверно. Ошибка в том, что сокет еще не готов к работе. Запускать таймер нужно после того, как в клиентский сокет будут переданы данные адреса и порта сервера.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#125 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
![]() Цитата:
Код:
Последний раз редактировалось Shouldercannon; 02.05.2009 в 16:10. |
|
![]() |
![]() |
![]() |
#126 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
ClientSocket.Active:=True; нужно удалить, это есть в таймере.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#127 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
![]()
Снова про бан систему.
При старте программы в Memo1 помещаю список забаненых IP, потом этот список помещаю в массив. Код:
Код:
Код:
Последний раз редактировалось Shouldercannon; 07.05.2009 в 15:16. |
![]() |
![]() |
![]() |
#128 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Нужно чтобы клиент вошел, но не мог ничего набирать и смотреть, или что?
Логично проверять IP и ник одновременно, и при совпадении закрывать канал, т.е. забаненый клиент не может подключиться, его просто выкидывают каждый раз.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
![]() |
![]() |
![]() |
#129 | ||
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
![]() Цитата:
Совсем от темы отклонился ![]() Я хотел спросить в какой процедуре на сервере при совпадении IP не допускать юзера до чата. Вот вы что-то писали Цитата:
Последний раз редактировалось Shouldercannon; 07.05.2009 в 19:06. |
||
![]() |
![]() |
![]() |
#130 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Очень просто. Объясню с самого начала. Вот клиент подключился. Процедура в таймере (procedure TForm1.ServerTimerTimer(Sender: TObject); ) работает всегда, даже если не пришло ни одного пакета, ...за наличие пакета отвечает вот этот код:
Код:
Код:
Этот случай просто выкидывает забаненых клиентов. Второй вариант менее эффективен. Он позволяет клиенту подключиться к чату, видеть что пишут его участники, но не позволяет ничего отправлять и изменять. Т.е. после определения пользователя сервер шлет управляющий пакет, который заблокирует все элементы управления, преимущественно кнопки, ...но и функции сокета если нужно. Для этого создается новая команда, как? ...читаем исходную статью и добавляем функционал для ее работы.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 08.05.2009 в 15:24. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обновление в блоге - Создание клиент-сервера | 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 |