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]/') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |