如何配置Indy v10以支持IPv4 + IPv6?

时间:2013-03-01 21:11:00

标签: delphi indy indy10

使用以下代码,我可以获得IPv4网站的内容:

uses 
  IdHttp;

IdHttp1 := TIdHttp.Create(nil);
try
  Result := IdHttp1.Get('http://www.heise.de/')
finally
  IdHttp1.Free;
end;

但是当我尝试连接到IPv6网站时,我收到套接字错误#11004:

IdHttp1 := TIdHttp.Create(nil);
try
  Result := IdHttp1.Get('http://www.six.heise.de/')
finally
  IdHttp1.Free;
end;

我可以ping www.six.heise.de就好了(IP 2a02:2e0:3fe:100 :: 6 :)并且Firefox显示网站没有问题。

我需要在Indy(SVN的最新V10版本)中更改以连接到IPv4和IPv6网站吗?

1 个答案:

答案 0 :(得分:11)

需要告诉

TIdTCPClient是否使用IPv4或IPv6作为其套接字和主机名到IP的解析。这是使用TIdTCPClient.IPVersion属性完成的。但是,TIdHTTP是一种特殊情况,因为它在内部管理TIdTCPClient属性和连接,包括IPVersionTIdHTTP根据请求的网址设置IPVersion。要请求包含IPv6主机名的URL,需要将其括在括号中,例如:

Result := IdHttp1.Get('http://[www.six.heise.de]/')