Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать аутификацию после подключения клиента к TServerSocket [D7, WinXP]


Страницы:   1 2

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 ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо