![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ну не пойму я никак, как сделать разрешение/запрет на соединение!
Aleksandr © (2003-04-11 18:22:00)Я только-только осваиваю MIDAS. Нужно мне, чтобы сервер допускал к связи только три компьютера с момента запуска. Соответственно, у него должен храниться список имен подключавшихся компьютеров, а клиент SocketConnection при коннекте должен передать имя компа и получить доступ/отказ к продолжению работы (первые три имени сервер должен куда-то себе занести, а при следующих коннектах допускать только те, которые внесены). Что тут нужно делать? Пытался через проперти формы сервера, так он вообще вешается при попытке что-либо туда передать на OnRemoteDataModuleCreate... В Инете поискал литературу - там либо самые азы ("положите компонент на форму"), либо не о том...
Набережных С. (2003-04-14 18:29:00) [1]>Aleksandr © (14.04.03 14:15)
Боюсь, что не правильно. Рассмотри такую ситуацию: клиента для твоего сервера пишет кто-то другой и просто проигнорирует существование твоего спецобъекта и сразу начнет работать с RemoteDataModule? Или я не так понял?
Решение о предоставлении услуг должен принимать только сервер, используя собственные механизмы или опираясь на систему безопасности ОС. Клиент не должен иметь возможности на это влиять. А с точки зрения взаимодействия потоков ты поступил правильно, насколько можно судить не видя кода:) Загляни на RSDN, там есть несколько статей на тему COM, потоковых моделей и защиты.
Aleksandr (2003-04-14 14:15:00) [2]Скажите, насколько корректен и чем чреват такой подход:
я в том же модуле, где и RemoteDataModule, создал объект с единственным свойством - строкой, и критическую секцию, защищающую все обращения к этой строке. В разделе инициализации они создаются, в финализации уничтожаются. На OnLogin клиента я сделал функцию в Types Library, которая (для начала) заносит в упомянутый объект имя компьютера коннектящегося клиента либо ищет его в нем либо при количестве ";" выше двух отказывает в доступе. Правильно ли все это?
Aleksandr (2003-04-14 13:38:00) [3]Вы знаете, даже на Си не могу найти :(.
Набережных С. (2003-04-13 09:35:00) [4]IMHO самое простое: При подключении клиент получает объект с одним методом, который в ответ на корректное имя возвращает клиенту полнофункциональный объект, объявленный с ciInternal. Такой "идентифицирующий" объект может быть один для всех клиентов, однако боюсь, что для "только-только осваивающего MIDAS" даже это будет сложновато. Читай все, что найдешь, про COM и про потоковые модели. И учти, что все более-менее путное по этим вопросам ориентировано на Си.