I는 IPv4 웹 사이트의 콘텐츠를 얻을 수 있습니다 :IPv4 + IPv6을 지원하도록 Indy v10을 구성하는 방법은 무엇입니까? 다음 코드와
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는 문제없이 웹 사이트를 표시합니다.
IPv4와 IPv6 웹 사이트에 모두 연결하려면 Indy (최신 V10은 SVN에서 빌드해야 함)에서 변경해야 할 사항은 무엇입니까?
웹 브라우저에 http를 허용하지 않으므로이 오히려 이상한 솔루션을 작동하지만입니다 : // [WWW를 .six.heise.de] /. 웹 사이트가 ipv4 또는 ipv6인지 여부를 결정할 수있는 방법이 있습니까? ipv6의 경우 URL에 대괄호를 추가 하시겠습니까? – Casady
URL에 사용되는 IPv6 주소는 [RFC 2732] (http://tools.ietf.org/html/rfc2732)에 따라 대괄호로 묶어야합니다. 호스트 명은 그렇지 않지만, 'TIdHTTP'는 현재 IPv4와 IPv6를 사용할 때를 미리 알 수있는 다른 방법이 없습니다. 웹 브라우저가 URL에 연결하면 DNS를 통해 호스트 이름을 확인하여 사용 가능한 IPv4/IPv6 주소를 얻은 다음 성공할 때까지 연결을 시도합니다. 'TIdTCPClient'는'IPVersion'이 설정되고 IPv4/IPv6 소켓이 생성 된 후에 호스트 이름을 결정합니다. 여러 개의 IP에 연결을 시도하지 않습니다. 그것은 미래에 변화해야 할 수도 있습니다. –
지금은 'TIdDNSResolver'를 사용하여 적절한 형식의 URL로'TIdHTTP'를 사용하기 전에 호스트 이름을 수동으로 DNS 조회 할 수 있습니다. –