【发布时间】:2016-10-17 13:17:44
【问题描述】:
当我尝试通过 IPv6 网络连接到 Datasnap REST 服务器时,我收到套接字“网络无法访问”错误。
我正在使用TDSRestConnection 进行连接。我在HostName 属性中设置了我的服务器名称。
【问题讨论】:
标签: ios delphi ipv6 delphi-xe8 datasnap
当我尝试通过 IPv6 网络连接到 Datasnap REST 服务器时,我收到套接字“网络无法访问”错误。
我正在使用TDSRestConnection 进行连接。我在HostName 属性中设置了我的服务器名称。
【问题讨论】:
标签: ios delphi ipv6 delphi-xe8 datasnap
服务器端需要向其公共 DNS 添加一个注册类型 AAAA。这是 IPv6 的 DNS64。因此,此寄存器的值是 Google NAT64 前缀 (64:FF9B::) + 您的 IPv4。
如果公网 IP 例如为 200.123.12.34,则 AAAA 寄存器值为 64:FF9B::200.123.12.34。 R. 另一个值是您的域名,例如 myapp.mydomain.com 或 myapp.mydomain.com.br。您需要做的另一件事是实现一个函数来在您的 Iphone 位于 IPv6 网络中时解析名称。
以上示例不适用于 REST DATASNAP 客户端。在我的示例下面,我已经在我的 datasnap 客户端模块上实现了它。
const
S_HOST_NAME = 'myapp.mydomain.com';
var
control : integer;
implementation
procedure TfrmClientModule.conect;
var
x : string;
begin
try
control := control + 1;
if control < 3 then
begin
DSRestConnection.Reset;
x := ServerMethods1Client.ReverseString('yx');
end;
except
if DSRestConnection.Host = S_HOST_NAME then
DSRestConnection.Host := '[' + S_HOST_NAME + ']'
else
DSRestConnection.Host := S_HOST_NAME;
conect;
end;
end;
procedure TfrmClientModule.DataModuleCreate(Sender: TObject);
begin
Controle := 0;
DSRestConnection.Host := '[' + S_HOST_NAME + ']';
conect;
end;
【讨论】: