![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать аутификацию после подключения клиента к TServerSocket [D7, WinXP]
minomorf © (2009-10-12 16:53:00)Т.е. клиент подрубается и сразу отправляет пакет с паролем.
Если на сервере сразу после подключения не пришел пароль или он неверен - отключить клиента.
Как это сделать на сервере TServerSocket.
Можно и на пальцах, а именно какие события сервера придется ловить и как сделать таймаут ожидания пакета с паролем?
Сергей М. (2009-10-12 18:51:00) [21]
> передать таймеру идентификатор сокета
У TTimer, к примеру, есть св-во Tag.
Можно и наоборот - сослаться на созданный TTImer в свойстве Socket.Data.
ТОлько вот вовсе необязательно плодить кучу таймеров - достаточно всего одного.
Сергей М. (2009-10-12 18:49:00) [22]Надо, если на каждый клиенский сокет ты будешь создавать отдельный таймер.
minomorf (2009-10-12 18:39:00) [23]Надо создавать массив связку Сокет-Таймер?!
minomorf (2009-10-12 18:38:00) [24]А еще вопрос. Как передать таймеру идентификатор сокета?
Сергей М. (2009-10-12 18:22:00) [25]
> какие события сервера придется ловить
+ OnClientDisconnect + OnClientError
Эти события тоже нужны как минимум для того чтобы остановить запущенный таймер при неожиданном дисконнекте по инициативе клиента или возникшей ошибке
minomorf (2009-10-12 18:18:00) [26]Спасибо
Сергей М. (2009-10-12 17:18:00) [27]
> какие события сервера придется ловить
OnClientConnect и OnClientRead
> как сделать таймаут ожидания пакета с паролем
В обработчике OnClientConnect запускаешь таймер с заданным периодом срабатывания - он будет отсчитывать время таймаута.
В обработчике события таймера закрываешь соединение.
В обработчике OnClientRead принимаешь передаваемые клиентом данные, аккумулируешь их в буфере, анализируешь содержимое буфера и в случае обнаружения в нем ожидаемого пароля останавливаешь таймер.
minomorf (2009-10-12 17:02:00) [28]NonBlocking
Сергей М. (2009-10-12 16:57:00) [29]Режим какой - nonblocking или threadblocking ?