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網絡上你的應用程序,設置你的Mac作爲IPv6的接入點,因爲這裏說明:
您不需要明確發佈'IPVersion'屬性。後裔類繼承'protected'成員,並且類的聲明單元隱式訪問該類的'protected'成員。所以,在你的例子中'輸入TIdTelnetHack = class(TIdTelnet)''就足夠了。 –
務必在Indy的問題跟蹤器中爲[此票證]投票(https://github.com/IndySockets/Indy/issues/164)。 –