Ошибка доступа к удаленному серверу, но не локально - PullRequest
0 голосов
/ 04 июля 2018

Я кодирую с BDS 2006 Win32 на ОС Windows 10 Home Premium и ноутбуке Dell Inspiron N7110.

Я создал простую клиент-серверную программу, используя TSocketConnection на стороне клиента. Локально работает. Форма на стороне сервера всплывает при подключении клиентом. Я вижу, что данные моего клиентского набора данных на клиенте тоже в порядке.

ПРОБЛЕМА. Когда клиентское приложение пытается получить доступ к серверу приложений на ПК в моем офисе, форма удаленного сервера все еще появляется на этом другом ПК (что указывает на то, что соединение установлено), однако, когда клиентское приложение пытается откройте набор данных клиента, он получит сообщение «ошибка загрузки Midas.dll». Это происходит в режиме разработки или во время выполнения при обращении к удаленному ПК.

FYI: (по-прежнему подключается к удаленному ПК) с TSocketConnection.Host, установленным на "IPMServer.ddns.net", клиент TSocketConnection находит и правильно разрешает ServerName и ServerGUID в режиме разработки, и набор данных клиента "видит "поставщик источника данных таблицы RDM. Однако клиентский набор данных получает ошибку Midas, когда я пытаюсь установить для свойства клиентского набора данных Active значение True.

К вашему сведению: чтобы убедиться, что мое приложение для клиента нашло удаленный сервер в моей локальной сети ... Я использую службу перенаправления URL-адресов для моего DDNS-URL. Мой роутер поддерживает NAT loopback. У меня в локальной сети зарезервирован IP-адрес удаленного сервера ПК. Моя локальная сеть перенаправляет все TSocketConnection.Port звонки на сервер приложений. Удаленный брандмауэр Windows позволяет удаленному серверу отправлять клиенту. Я снова вижу, как на удаленном ПК появляется форма удаленного сервера.

Дополнительные сведения. Около восьми лет назад я успешно создал клиент-серверную систему TWebConnection, используя тот же подход и инструменты. ОС были, скорее всего, XP-блоками. Он работал нормально.

Я также недавно создал систему клиент-сервер, использующую только компоненты XE2 и Indy, используя ту же аппаратную стратегию и стратегию перенаправления URL, которую я использую для приложения TSocketConnection. Это "просто Delphi и Indy" работает отлично. Я создал две версии этого подхода «просто Delphi и Indy». Один с клиентскими наборами данных на стороне клиента, а другой с базой данных Absolute Component Ace на стороне клиента. Удаленный сервер использует ADO и Firebird во всех описанных системах. Оба они прекрасно работают без Datasnap вообще! (но пара тысяч строк кода не нужна Datasnap).

RECAP: Моя TSocketConnect система клиент-сервер работает нормально локально. Когда я пытаюсь получить данные с того же сервера приложений на ПК в моей локальной сети, удаленный сервер подключается, но клиент получает сообщение «ошибка загрузки Midas.dll».

!!! Только что вспомнил ... Скомпилировал ли я клиента с MidasLib или без него в предложении uses, мой клиентский EXE-файл имеет одинаковый размер. Я не понимаю, как это связано с моей проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...