Ja, ich kenne die relevanten QP-Einträge schon und werde dort meine Erkenntnisse reinschreiben.
Aktuell habe ich mich entschieden, dass ich die
IP-Adresse lieber manuell setze. Ich habe teilweise auf den Rechnern neben dem WLAN-Network (192...) ein zweites Netzwerk für irgendwelche technischen Zwecke (169...). Die Standard-Implementierung von EMBT findet teilweise dieses Netzwerk auf Windows- und MacOS-Büchsen und dann funktioniert Tethering nicht.
Da ist mir nur etwas unklar, wie man da allgemein gültigen Code draus macht. So richtig prickelnd finde ich das Auspicken der
IP-Adresse auch nicht. Wenn man dies tut, darf man im Formular-Designer bei TetheringProfile keinen Manager setzen, sondern muss dies erst zur Laufzeit setzen. Sonst hat man keine Chance das PreferredNetwork irgendwie vorab zu setzen:
Delphi-Quellcode:
class function TStringUtils.getIPv4Address():
String;
var
AAddresses: TIdStackLocalAddressList;
LAddr: TIdStackLocalAddress;
I: Integer;
prefNetwork,
IP:
String;
begin
mlog.info('
setIPAddressManual');
AAddresses:=TIdStackLocalAddressList.Create();
prefNetwork:='
192.';
Result:='
';
try
GStack.GetLocalAddressList(AAddresses);
for I := 0
to AAddresses.Count-1
do
begin
LAddr:=AAddresses[I];
IP:=LAddr.IPAddress;
if ((
IP<>'
127.0.0.1')
and ((Result='
')
or ((prefNetwork>'
')
and (pos(prefNetwork,
IP)>0)
and (pos(prefNetwork,Result)<=0))))
then
begin
case LAddr.IPVersion
of
Id_IPv4:
begin
mlog.info('
Found IP-address*: '+
IP);
Result:=
IP;
end;
Id_IPv6:
begin
mlog.info('
Found IP-address: '+
IP);
end;
end;
end else
mlog.info('
Found IP-address: '+
IP);
end;
finally
AAddresses.Free;
end;
end;