2
Apple App Storeでは、ipv6のみのネットワークで動作する必要があります。 IdTelnetをそのようなネットワーク上で動作させるにはどうすればいいですか?ipv6専用ネットワークでIndy IdTelnetを使用する
Apple App Storeでは、ipv6のみのネットワークで動作する必要があります。 IdTelnetをそのようなネットワーク上で動作させるにはどうすればいいですか?ipv6専用ネットワークでIndy IdTelnetを使用する
TIdTelnet
はIPVersion
プロパティを持ちますが、protected
と宣言されているため、ユーザーコードで直接アクセスすることはできません。 IPVersion
を設定するためには、例えば、ハッククラスを宣言することができます。
uses
.., IdStack, IdGlobal, ..
type
TIdTelnetHack = class(TIdTelnet)
published
property IPVersion; //expose protected property
end;
procedure TForm1.TelnetConnect(const aHost:String);
var
aIPVersion: TIdIPVersion;
begin
if not IdTelnet1.Connected then
begin //not connected. go connect
// check if ipv6 or ipv4 network, and support both,
try
GStack.ResolveHost(aHost, Id_IPv6);
aIPVersion := Id_IPV6;
except
GStack.ResolveHost(aHost, Id_IPv4);
aIPVersion := Id_IPV4;
end;
IdTelnet1.Host := aHost;
IdTelnet1.Port := 8090;
TIdTelnetHack(IdTelnet1).IPVersion := aIPVersion; //set to IPv4 or IPv6
IdTelnet1.Connect;
end;
end;
をIPv6ネットワーク上でアプリケーションをテストするには、ここで説明したように、IPv6アクセスポイントとしてお使いのMacを設定します。
'IPVersion'プロパティを明示的に公開する必要はありません。子孫クラスは 'protected'メンバーを継承し、クラスの宣言ユニットはそのクラスの' protected'メンバーに暗黙的にアクセスします。したがって、あなたの例では 'type TIdTelnetHack = class(TIdTelnet);'で十分です。 –
Indyのissue trackerで[this ticket](https://github.com/IndySockets/Indy/issues/164)に投票してください。 –