当我尝试通过IPv6网络连接到Datasnap REST服务器时,我得到一个套接字"网络无法访问"错误。
我正在使用TDSRestConnection
进行连接。我在HostName
属性中设置了我的服务器名称。
答案 0 :(得分:-2)
服务器端需要向其公共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 CLIENTS。在我的示例下面,我已经在我的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;