|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.05.2009, 18:28 | #121 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Цитата:
Но при закрытии соединения есть подвох, юзер возвращается обратно в чат благодаря системе переподключения , а этого делать не надо. Последний раз редактировалось Shouldercannon; 01.05.2009 в 18:40. |
|
01.05.2009, 23:51 | #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. |
02.05.2009, 12:06 | #123 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Цитата:
И в правильном ли я месте поставил активацию тамера при дисконекте? Код:
|
|
02.05.2009, 15:13 | #124 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Место старта таймера коннекта выбрано неверно. Ошибка в том, что сокет еще не готов к работе. Запускать таймер нужно после того, как в клиентский сокет будут переданы данные адреса и порта сервера.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
02.05.2009, 15:58 | #125 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Цитата:
Код:
Последний раз редактировалось Shouldercannon; 02.05.2009 в 16:10. |
|
02.05.2009, 16:19 | #126 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
ClientSocket.Active:=True; нужно удалить, это есть в таймере.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
07.05.2009, 15:14 | #127 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Снова про бан систему.
При старте программы в Memo1 помещаю список забаненых IP, потом этот список помещаю в массив. Код:
Код:
Код:
Последний раз редактировалось Shouldercannon; 07.05.2009 в 15:16. |
07.05.2009, 15:43 | #128 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Нужно чтобы клиент вошел, но не мог ничего набирать и смотреть, или что?
Логично проверять IP и ник одновременно, и при совпадении закрывать канал, т.е. забаненый клиент не может подключиться, его просто выкидывают каждый раз.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
07.05.2009, 18:21 | #129 | ||
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Цитата:
Совсем от темы отклонился Я хотел спросить в какой процедуре на сервере при совпадении IP не допускать юзера до чата. Вот вы что-то писали Цитата:
Последний раз редактировалось Shouldercannon; 07.05.2009 в 19:06. |
||
08.05.2009, 15:20 | #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 |