Datasnap"网络无法访问" IPv6错误

时间:2016-10-17 13:17:45

标签: ios delphi ipv6 delphi-xe8 datasnap

当我尝试通过IPv6网络连接到Datasnap REST服务器时,我得到一个套接字"网络无法访问"错误。

我正在使用TDSRestConnection进行连接。我在HostName属性中设置了我的服务器名称。

1 个答案:

答案 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;