![]() |
|
![]() ![]() ![]() |
|
barsdm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Сервер и клиент на C++ Builder 2006.
Сервер - пустая форма + Remote Data Module с ADOQuery и DataSetProvider. Соединяется с MySQL. Клиент - набор компонентов для отображения данных. Подключение выполняется так:
На последней строке выдаётся ошибка "Неизвестный интерефейс". При этом на сервере программа запускается. Если клиент и сервер работают на одной машине, то проблем не происходит, данные появляются в таблице. Права доступа на сервере для используемого компонента настроены на полный доступ пользователю на машине клиента. Почему возникает ошибка через сеть, но работает, если ComputerName = "localhost"? |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
||||
|
||||
barsdm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Права я давал через оснастку Службы компонентов, Настройка DCOM, свойства компонента, и на вкладке Безопасность поставил все права для пользователя. NetBIOS-имя я там никак не указывал. Я создал на сервере пользователя с тем же имененем и паролем, что и пользователь, под которым запускается клиентская программа.
А насчёт того, что DCOM уже неактуальна или вовсе не была такой, я не знаю. А что лучше использовать вместо неё? Просто изучаю по книжке... там написано, что "пожалуй, наиболее универсальный вариант - технология DCOM". |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
||||
|
||||
barsdm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Да, правильно. Компьютеры не входят в домен. Могу выбирать только из локальных пользователей
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Ну.. может я что-то не понимаю в виндовом управлении правами, но, по-моему, это абсолютно разные юзеры
![]() |
|||
|
||||
barsdm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Дал права для Все на всё. Не помогло.
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Хорошо. А COM-интерфейс сервера зарегистрирован на обоих машинах?
|
|||
|
||||
barsdm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
На сервере регистрацию я выполнял запуском серверной программы с параметром /regserver. Там она зарегистрирована и всё работает, если запускать клиент там же. На клиенте я пробовал тоже зарегистрировать этот компонент. Ничего не изменилось.
Возможно, я не понимаю какого-то порядка регистрации. Есть ли где-то описание этого? Нужно ли настраивать что-либо на клиенте, настраивать вкладку Расположение? Я пробовал оставить один параметр "Запустить приложение на указанном компьютере" и указал там компьютер-сервер, но это не помогло. Это сообщение отредактировал(а) barsdm - 22.3.2009, 01:42 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
На клиенте должен быть зарегистрирован proxy от сервера. Обычно это какая то dll, рядом с сервером (если генерилось VS, то что то типа <имя сервера>ps.dll)
|
|||
|
||||
barsdm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Компилировал в билдере, dll у меня нет. Я попробовал написать другую программу и подключил к ней клиента через dcom, там всё отлично работает. Только там не используется datasetprovider и dcomconnection. Так что скорее всего проблема не в настройках Службы компонентов, а не знаю в чём...
![]() Нашёл 2 точно такие же темы на других форумах: http://borland.xportal.ru/forum/viewtopic.php?t=1074 http://forum.codenet.ru/archive/index.php/t-22626.html Попробовал их решения, но это не помогло. Это сообщение отредактировал(а) barsdm - 20.3.2009, 23:29 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
А если сервер перенести к клиенту он работает?
Кстати, настраивать на клиенте местоположение сервера через dcomcnfg не нужно - у тебя сервер явно создается на машине 172.16.1.21 Еще можно порекомендовать запустить клиента под COM снифером - посмотреть какого именно интерфейса он не нашел Еще вариант - запустить клиента локально (под отладчиком), потом посмотреть какие dll он загрузил (список модулей), посмотреть, каких из них нет на отдельной машине с клиентом, принести и зарегистрировать (на всякий случай) Это сообщение отредактировал(а) xvr - 21.3.2009, 09:43 |
|||
|
||||
barsdm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
После переноса серверной части на клиентский компьютер всё равно возникает такая же ошибка. Похоже на то, что какого-то файла там не хватает. Попробую посмотреть, какие файлы есть на сервере и чего нет на клиенте.
|
|||
|
||||
barsdm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2009 Где: Екатеринбург Репутация: нет Всего: нет |
После установки borland на клиенте всё начинает работать... и локально, и через сеть.
Посмотрел загружаемые dll, файлы, обращения к реестру. После установки билдера появляется интерфейс IAppServer {1AEFCC20-7A24-11D2-98B0-C69BEB4B5B6D}, к которому обращаются программа. Как можно правильно зарегистрировать всё это без установки билдера? midas.dll регистрировал, но это не даёт результата. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Посмотрите через dcomcnfg куда смотрит IAppServer - это и надо зарегистрировать
![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |