微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

但是当我尝试连接到一个IPv6网站时,我得到了Socket Error#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网站?

解决方法

需要告诉TIdTCPClient是否将IPv4或IPv6用于其套接字和主机名到IP分辨率.这是使用TIdTCPClient.IPVersion属性完成的.然而,TIdHTTP是一种特殊情况,因为它在内部管理TIdTCPClient属性和连接,包括IPVersion. TIdHTTP根据请求的URL设置IPVersion.为了请求包含IPv6主机名的URL,它需要用括号括起来,例如:
Result := IdHttp1.Get('http://[www.six.heise.de]/')

原文地址:https://www.jb51.cc/delphi/101424.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐