加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:26:28 所属栏目:大数据 来源:网络整理
导读:使用以下代码,我可以获得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.
使用以下代码,我可以获得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]/')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读