Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   UDP-Broadcast an alle außer an mich selbst (https://www.delphipraxis.net/153851-udp-broadcast-alle-ausser-mich-selbst.html)

DerAndereMicha 18. Aug 2010 07:34

UDP-Broadcast an alle außer an mich selbst
 
Hallo,

ist es möglich (mit den Indys) einen Broadcast per UDP an alle
PCs im Netztwerk zu senden, außer an mich selbst?

Hintergrund ist Folgender. Mein Programm ist gleichzeitig
UDP-Server und Client und reagiert u.a. auch auf Broadcasts
anderer PCs. Außerdem sendet es aber unter bestimmten
Umständen auch Broadcasts ins Netz. Leider bekommt es diese
zur Zeit aber auch selbst und reagiert damit (fälschlicherweise)
auch wieder darauf (siehe oben).

Leider kann ich aber die eigene IP nicht einfach ausschließen,
da unter bestimmten Umständen auch ein echter Broadcast von
einem anderen Programm auf dem selben PC stammen kann.

Zusammenfassung:

Ich suche also eine Möglichkeit, wie ich UDP-Broadcasts
erkennen kann, die vom selben Programm stammen oder wie
ich UDP-Broadcasts verschicken kann, die das Programm
nicht auch selbst bekommt.

Ich hoffe ich habe das Ganze nicht zu kompliziert beschrieben.

Gruß
Micha

mkinzler 18. Aug 2010 07:38

AW: UDP-Broadcast an alle außer an mich selbst
 
Werte doch die Sender IP des Broadcast aus

DerAndereMicha 18. Aug 2010 07:45

AW: UDP-Broadcast an alle außer an mich selbst
 
Hallo Markus,

das geht leider nicht, wie ich oben bereits erwähnt hatte:

Zitat:

Leider kann ich aber die eigene IP nicht einfach ausschließen,
da unter bestimmten Umständen auch ein echter Broadcast von
einem anderen Programm auf dem selben PC stammen kann.
Gruß
Micha

Neutral General 18. Aug 2010 07:47

AW: UDP-Broadcast an alle außer an mich selbst
 
Dann schreib halt in die Broadcast-Nachricht den Absender oder so rein.
Bzw. du kannst als Programmierer deine Broadcast-Message ja so markieren, dass du erkennen kannst ob es deine ist oder die eines anderen Programms

mkinzler 18. Aug 2010 07:47

AW: UDP-Broadcast an alle außer an mich selbst
 
Dann musst du halt noch den Quellport auswerten

Tonic1024 18. Aug 2010 07:50

AW: UDP-Broadcast an alle außer an mich selbst
 
Also ein Broadcast ist ein Broadcast. Daraus ein Teil-Cast zu machen, dass sowas geht wäre micr nicht bekannt.

Mach doch ein Flag als Class-Member oder globale Variable dass aussagt, wenn der nächste Broadcast von der eigenen IP kommt, dann ignoriere den. Das Flag setzt du kurz bevor du den Broadcast absetzt und resettest es wenn du ihn empfangen hast. Wenn du am Protokoll herumfingern kannst kannst du noch ne ProgrammID mit übergeben, damit du sicher sein kannst, dass dieser Broadcast von dir selbst stammt.

Gruß,

Toni

DerAndereMicha 18. Aug 2010 07:56

AW: UDP-Broadcast an alle außer an mich selbst
 
Hallo,

@Neutral General: das geht leider nicht, da es sich um
Weiterleitungen von anderen Nachrichten handelt, die
nicht verfälscht werden dürfen.

@mkinzler: auch der Port ist der selbe :-)

@Tonic1024: Das mit dem Flag mache ich bereits, habe aber den
Einruck, daß zwischen Versand des Broadcasts und Empfang
des selbigen durchaus u.U. auch Broadcasts von anderen PCs
empfangen werden, die dann als eigene erkannt werden...


Gruß
Micha

Neutral General 18. Aug 2010 07:59

AW: UDP-Broadcast an alle außer an mich selbst
 
Zitat:

Zitat von DerAndereMicha (Beitrag 1042952)
@Neutral General: das geht leider nicht, da es sich um
Weiterleitungen von anderen Nachrichten handelt, die
nicht verfälscht werden dürfen.

@mkinzler: auch der Port ist der selbe :-)

Dann gibt es keine Möglichkeit das zu erkennen, außer halt mit nem Flag. Aber wie du schon sagtest könnte das theoretisch nicht 100%ig sicher sein.

mkinzler 18. Aug 2010 07:59

AW: UDP-Broadcast an alle außer an mich selbst
 
Dann bliebe ja nur noch die Benachrichtigung des anderen Programms, dass der nun folgende Broadcast zu ignorieren ist.

generic 18. Aug 2010 08:16

AW: UDP-Broadcast an alle außer an mich selbst
 
Zitat:

Zitat von DerAndereMicha (Beitrag 1042952)
Hdas geht leider nicht, da es sich um
Weiterleitungen von anderen Nachrichten handelt, die
nicht verfälscht werden dürfen.

Alle Nachrichten speichern und schauen ob diese schon einmal da waren. Die werden sich ja hoffentlich Inhaltlich ändern bzw. enthalten einen Timestamp oder so.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr.
Seite 1 von 2  1 2      

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