Einzelnen Beitrag anzeigen

Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: UDP-Multicast Nachricht empfangen

  Alt 2. Mai 2019, 15:38
Ich bin da mittlerweile auch etwas weitergekommen.
Zum empfangen von Uni- und MultiCast hab ich einen IdIPMCastClient (als Empfänger) und einen IdUDPClient (als Sender) auf die Form gebappt.
Im Objektinspektor jeweils dazu nichts geändert. Erforderliche Einstellungen dazu setze ich in der Form.OnCreate und zur Laufzeit.
Delphi-Quellcode:
  // Vorgaben setzen
  IdIPMCastClient.ReuseSocket := rstrue;
  IdUDPClient.ReuseSocket := rstrue;
  cbb_MCGROUPChange(self); // set MultiCast-IP
  cbb_IPChange(self); // set tx_ip and tx_multi
  cbb_PortChange(self); // set tx_port
  // RX - IP's binden
  cb_BINDINGS.Clear;
  cb_BINDINGS.Items.Add(IP_loc);
  IdIPMCastClient.Bindings.clear;
  IdIPMCastClient.Bindings.Add.IP := IP_loc;
  IPlist := TStringList.Create;
  try
    GStack.AddLocalAddressesToList(IPlist);
    for I := 1 to IPlist.Count do
    begin
      IdIPMCastClient.Bindings.Add.IP := IPlist[i - 1];
      cb_BINDINGS.Items.Add(IPlist[i - 1]);
    end;
  finally
    IPlist.Free;
  end;
  if(cb_BINDINGS.Items.Count > 0) then cb_BINDINGS.ItemIndex := 0;
  IdIPMCastClient.Active := true;
  IdUDPClient.Active := true;
Das funzt prima soweit - auch mit gleicher IP im Sender/Empfänger.
Erstaunlicherweise empfängt der IdIPMCastClient auch Uni- und Broadcast und der IdUDPClient sendet alle Cast-Typen.
Wozu gibt es denn dann noch den IdIPMCastServer und den IdUDPServer ?

Ein kleines Problem hab ich noch:
Beim ESP8266 gibt es eine Funktion Udp.remoteIP(), welche mir die Absender-IP gibt (wie bei Indy die ABinding.PeerIP) und eine Funktion Udp.destinationIP(), welche mir zusätzlich noch das ursprüngliche Ziel angibt (also ob es eine Uni- Broad- oder Multicast-IP war).

Letzteres fehlt mir beim Indy. Das wäre auch auf dem PC sehr hilfreich zu wissen / zu unterscheiden, wohin der Call eigentlich ging.
Ich find dazu nix im WWW. Jemand ne Idee, wie man sich sowas ggf. separat basteln kann, falls Indy das nicht schon irgendwo bereithält ?

Geändert von TERWI ( 2. Mai 2019 um 15:40 Uhr)
  Mit Zitat antworten Zitat