10

次のコードを使用して、IPv4Webサイトのコンテンツを取得できます。

uses 
  IdHttp;

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

しかし、IPv6 Webサイトに接続しようとすると、ソケットエラー#11004が発生します。

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

www.six.heise.deに正常にpingを実行でき(IP 2a02:2e0:3fe:100 :: 6 :)、Firefoxは問題なくWebサイトを表示します。

IPv4とIPv6の両方のWebサイトに接続するには、Indy(SVNからの最新のV10ビルド)で何を変更する必要がありますか?

4

1 に答える 1

12

TIdTCPClientソケットとホスト名からIPへの解決にIPv4とIPv6のどちらを使用するかを指示する必要があります。これは、TIdTCPClient.IPVersionプロパティを使用して行われます。ただし、これは、を含むプロパティと接続を内部TIdHTTPで管理するため、特殊なケースです。 要求されているURLに基​​づいて設定します。IPv6ホスト名を含むURLを要求するには、次のように角かっこで囲む必要があります。TIdTCPClientIPVersionTIdHTTPIPVersion

Result := IdHttp1.Get('http://[www.six.heise.de]/')
于 2013-03-01T21:39:27.797 に答える