Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   App Tethering - DiscoverManagers(Target) - Multicast (https://www.delphipraxis.net/194722-app-tethering-discovermanagers-target-multicast.html)

weisswe 28. Dez 2017 11:08

App Tethering - DiscoverManagers(Target) - Multicast
 
Hello!

Ich gebe App Tethering eine neue Change und wollte eine kleine einfache Test-App erstellen.
Hat auch funktioniert - unter speziellen Voraussetzungen.
1. AllowedAdapters: Network_V4
2. DiscoverManagers funktioniert nur OHNE Target Wert

Und nun zu Punkt 2:
Hier steht in der Doku das man eine spezielle IP bzw. Maske hinterlegen kann.
In meinem Fall wäre der Server auf 192.168.1.54 (auch in der Doku ist eine solche IP angegeben - siehe nachfolgend).
Code:
Original Delphi Tokyo Doku:
http://docwiki.embarcadero.com/Libraries/Tokyo/de/System.Tether.NetworkAdapter.TTetheringNetworkAdapterCommon.DoDiscoverManagers
Standardmäßig führt der Manager die Suche im Subnetz des LAN (Local Area Network) durch, in dem sich das Gerät mit Ihrer Anwendung befindet.
Verwenden Sie den Parameter ATargetList, um eine Liste mit einer oder mehreren IP-Adressen oder Subnetzen anzugeben, in denen Sie Remote-Manager ermitteln möchten. Um ein Subnetz zu definieren, geben Sie eine IP-Adresse mit 0 als vierter Nummer an. "192.168.4.0" bezeichnet beispielsweise das Subnetz 192.168.4.x.
Hinweis: Sie können keine umfassenderen Subnetze angeben. "192.168.0.0" wird beispielsweise nicht unterstützt.
Also have ich diese Aufrufe versucht:
- DiscoverManagers('192.168.1.54'); -> kein Server gefunden!
- DiscoverManagers('192.168.1.0'); -> wieder kein Server gefunden!

Fehlermeldung beim Debuggen: Die übermittelte IP-Adresse ist keine gültige Multicast-Adresse!

Ok, aha - interessant.
Dann hab ich im Indy Code etwas gefunden:
Delphi-Quellcode:
//for IPv4 Multicast address chacking
const
  IPv4MCastLo = 224;
  IPv4MCastHi = 239;

function TIdStack.IsValidIPv4MulticastGroup(const Value: string): Boolean;
var
  LIP: string;
  LVal: Integer;
begin
  Result := False;
  if IsIP(Value) then
  begin
    LIP := Value;
    LVal := IndyStrToInt(Fetch(LIP, '.'));   {Do not Localize}
    Result := (LVal >= IPv4MCastLo) and (LVal <= IPv4MCastHi);
  end;
end;
Dieser Check verursacht das Problem - nur IPs die zwischen 224.0.0.0 und 239.0.0.0 sind werden akzeptiert!??
Warum?

Jemand eine Idee?

Guido R. 26. Feb 2018 11:44

AW: App Tethering - DiscoverManagers(Target) - Multicast
 
Hi !

Ich habe gerade das gleiche Problem. Hast Du inzwischen irgendwelche Erkenntnisse dazu erlangt?

Gruß
Guido R.

MichaMD 23. Okt 2021 21:38

AW: App Tethering - DiscoverManagers(Target) - Multicast
 
Ich denke es wird eine externe Ip und keine Interne benötigt, wobei die 192. die interne wäre. Soweit meine Vermutung.^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz