AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke UDP-Multicast Nachricht empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

UDP-Multicast Nachricht empfangen

Ein Thema von TERWI · begonnen am 28. Apr 2019 · letzter Beitrag vom 2. Mai 2019
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#11

AW: UDP-Multicast Nachricht empfangen

  Alt 30. Apr 2019, 07:18
Moin...
[OT]
Zitat:
Delphi 6
Ist das ein Schreibfehler? Selbst für asbach uralte Programme die noch in Pflege sind, ist doch der Standard D7...oder? Für privat macht es überhaupt keinen Sinn D6 zu verwenden.
[/OT]

Geändert von haentschman (30. Apr 2019 um 07:30 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#12

AW: UDP-Multicast Nachricht empfangen

  Alt 30. Apr 2019, 09:10
Hmm...

[OT]

Moin...
[OT]
Zitat:
Delphi 6
Ist das ein Schreibfehler? Selbst für asbach uralte Programme die noch in Pflege sind, ist doch der Standard D7...oder? Für privat macht es überhaupt keinen Sinn D6 zu verwenden.
[/OT]
Ganz recht DELPHI 6!

Damit kann ich bisher alles machen, was ich brauchte.
Ohne immer wieder Geld auszugeben für neue Versionen!
Ohne Online-Zwang!
Ohne dicke, fette EXE (ohne Mehrwert) zu erstellen!
...

Und bitte jetzt NICHT SCHON WIEDER das Rumgebasche auf die alte Version und das ich UNBEDINGT auf die neueste 10x Community Edition hochgehen soll...

Ich nutze D6 mit allen Möglichkeiten, welche damals noch die Professional geboten hat! (Incl. Datenbankanbindungen)
Und nein ich habe noch nichts vermisst!

[/OT]
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

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

AW: UDP-Multicast Nachricht empfangen

  Alt 30. Apr 2019, 16:39
Ein Mega-Paket DelphiWebThankYouBitCoins an HolgerX
Ich habe auch eine Ewigkeit mit D7 auf Win98 rumgemacht und bin gut damit ausgekommen.
Wenn mann nicht zwingend irgendwelches neues API-Gedöns braucht, ist ein Umstieg auch nicht zwingend nötig - bei mir leider ja...
So viel zum OT.

Zwischenbericht:
@HolgerX, es hat hier wie gesagt gefunzt.
Ich teste hier grad noch rum und zeitnah meine Ergebnisse kund.
So viel sei schon mal gesagt: Ich hab hier nun die aktuelle Indy 10.6.2.5498 von vorgestern am Start - da hat sich offensichtlich einiges zur org. Delphi-Inst aus 2008 geändert, was ich erst mal umsetzen und testen muss.

EDIT- ÜBRIGENDS:
Da Indy10 sicht nicht "automatisch per Fullxxx.bat installieren ließ und ich auch keine gescheite Lösung im WWW dazu gefunden habe, hab ich's eben manuell gemacht - was dann auch gefunzt hat. Heureka !
Dummerweise hatte ich nach einem viel späteren Windoof-Restart plötzlich keinen Desktop mehr ...
DRAMA - KRISE ! Egal, auch (relativ einfach) gelöst und alles betreff Indy u. a. noch mal von vorne.

Geändert von TERWI (30. Apr 2019 um 16:41 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: UDP-Multicast Nachricht empfangen

  Alt 30. Apr 2019, 16:47
Zitat:
Damit kann ich bisher alles machen, was ich brauchte.
Ohne immer wieder Geld auszugeben für neue Versionen!
Ohne Online-Zwang!
Ohne dicke, fette EXE (ohne Mehrwert) zu erstellen!


gruss
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

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

AW: UDP-Multicast Nachricht empfangen

  Alt 30. Apr 2019, 16:57
Ich hab mittlerweile festgestellt, dass der IdIPMCastClient sowohl UniCast als auch MultiCast empfängt.
Schon sehr schön - KOMMA ABER:

ABinding liefert nur Daten zum Absender (dessen IP, Port) zurück - aber nicht eine mögliche MultiCast-IP, mit der man dann in der Empfangsroutine auswerten könnte, ob es sich um Multi- oder UniCast-Anruf handelt.

Oder gibt's da noch nen Trick via übermitteltem Socket ?
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

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

AW: UDP-Multicast Nachricht empfangen

  Alt 30. Apr 2019, 18:15
Weitere Erkentnisse:
Es werden offensichtlich lokal (am selben Rechner) nur abgesendete Pakete an '127.0.0.1' erkannt.

D.h. senden von -> an die eigene IP mittels PacketSender als Multi- oder UniCast wird nicht erkannt ?!

Von externen PCs/ESP-Modulen klappt das hier allerdings wie erwähnt prima.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#17

AW: UDP-Multicast Nachricht empfangen

  Alt 2. Mai 2019, 08:24
Weitere Erkentnisse:
Es werden offensichtlich lokal (am selben Rechner) nur abgesendete Pakete an '127.0.0.1' erkannt.

D.h. senden von -> an die eigene IP mittels PacketSender als Multi- oder UniCast wird nicht erkannt ?!

Von externen PCs/ESP-Modulen klappt das hier allerdings wie erwähnt prima.
Hast du mehrere Programme auf *einen* PC laufen, die das Multicast empfangen sollen?
Das Paket kommt nur einmal an die Netzwerkkarte. Somit kann auch nur eine Software das Paket empfangen.
Bei meiner Software BOMAC löse ich, dass Problem indem ich mich auf mehrere IPs binde, welche natürlich an der Netzwerkkarte eingestellt sein müssen. Allerdings sind das bei mir Broadcast-Pakete.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#18

AW: UDP-Multicast Nachricht empfangen

  Alt 2. Mai 2019, 12:53
Hmmm..

Hast du mehrere Programme auf *einen* PC laufen, die das Multicast empfangen sollen?
Das Paket kommt nur einmal an die Netzwerkkarte. Somit kann auch nur eine Software das Paket empfangen.
Bei meiner Software BOMAC löse ich, dass Problem indem ich mich auf mehrere IPs binde, welche natürlich an der Netzwerkkarte eingestellt sein müssen. Allerdings sind das bei mir Broadcast-Pakete.
Deshalb verwendet er ja Multicast und nicht UniCast (UDP), da sich hierdurch alle Clienttools mit TIdIPMCastClient den Port teilen und das Paket an allen ankommt!

Die Bindung an einen Empfänger ist durch setzen eines Parameters auf dem Socket aufgehoben, deshalb auch Multicast...

Anbei mein überarbeitetes Test-Tool.

Starte es mehrfach (+ Start Button) und Du kannst an allen gleichzeitig die Broadcast-Message empfangen..
Angehängte Dateien
Dateityp: zip Test_INDY_Multicast.zip (1,79 MB, 18x aufgerufen)
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
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, 16: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 16:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz