1.服务器必须使用域名.不能使用IP地址
2.Indy的话,域名加[]
3.DataSnap的话,Params.Values['CommunicationIPVersion'] :='IP_IPv6';
4.当前网络环境的判断,如下代码:
{$IFDEF IOS}
uses
StrUtils,
Posix.NetDB,
IdStackConsts;
{$ENDIF}
function IsSupportIPV6Host_IOS(const Host:String):Boolean;
{$IFDEF IOS}
var
APHostEnt:PHostEnt;
{$ENDIF}
begin
Result:=False;
{$IFDEF IOS}
//苹果只要求IOS9以上的系统运行APP支持IPV6
//IOS版本要大于9
if TOSVersion.Check(9) then
begin
try
FMX.Types.Log.d('OrangeUI IsSupportIPV6Host_IOS '+Host);
//如果当前环境是IPV4,APHostEnt为nil
APHostEnt:=gethostbyname2(MarshaledAString(TEncoding.UTF8.GetBytes(Host)),Id_PF_INET6);
Result:=(APHostEnt<>nil);
FMX.Types.Log.d('OrangeUI IsSupportIPV6Host_IOS IsIPV6 '+BoolToStr(Result));
except
//但是在IPV4切换到IPV6,程序没有退出的时候,会报错
end;
end;
{$ENDIF}
end;
原文http://blog.sina.com.cn/s/blog_44fa172f0102w8sj.html