使用 IBLite 无法连接到 Android 上的 Interbase 远程实例

Connecting to a remote instance of Interbase on Android using IBLite not working

在 Delphi 10.4.1 中,我正在尝试构建一个 Android 应用程序,该应用程序连接到笔记本电脑上的 Interbase 运行ning 实例(我可以远程连接到它从我的桌面)。我得到异常:

Project Project6.apk raised exception class EIBNativeException with message '[FireDAC][Phys][IBLite]Unable to complete network request to host "192.168.1.58".
Failed to locate host machine.
Undefined service gds_db/tcp.'.

连接参数:

Database=192.168.1.58:C:\Users\Public\Documents\Embarcadero\Studio.0\Samples\data\employee.gdb
User_Name=sysdba
Password=masterkey
DriverID=IB

如果我连接到本地数据库或 运行 Windows 上的应用,一切正常。

我在 XE7 (https://youtu.be/XAZQfYzvxHc?t=1384) 中看到过这个演示,但无法在 10.4.1 中使用它。

我做错了什么?

如果您 Windows 机器上的 InterBase 在默认实例 'gds_db' 上是 运行,那么它可能在端口 3050 上使用 TCP 套接字。尝试更改您的 Android 应用程序的数据库URL到下面所以它包括目标3050端口号。我假设它不能自动解析 Android 上的 'gds_db' 名称,因为 TCP 套接字服务名称未在 Android 上定义。在 Windows、Linux、macOS 等桌面平台上,InterBase 安装程序更新系统服务文件以提供 'gds_db' 名称到 3050 的翻译。仅提供 TCP 套接字端口号是一种防故​​障措施无需名称解析即可定位端点的方法。

数据库=192.168.1.58/3050:C:\Users\Public\Documents\Embarcadero\Studio.0\Samples\data\employee.gdb