![]() |
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 |
AW: UDP-Broadcast an alle außer an mich selbst
Werte doch die Sender IP des Broadcast aus
|
AW: UDP-Broadcast an alle außer an mich selbst
Hallo Markus,
das geht leider nicht, wie ich oben bereits erwähnt hatte: Zitat:
Micha |
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 |
AW: UDP-Broadcast an alle außer an mich selbst
Dann musst du halt noch den Quellport auswerten
|
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 |
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 |
AW: UDP-Broadcast an alle außer an mich selbst
Zitat:
|
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.
|
AW: UDP-Broadcast an alle außer an mich selbst
Zitat:
|
AW: UDP-Broadcast an alle außer an mich selbst
Ich denke das mit dem Speichern der Nachrichten ist ein
ganz guter Ansatz. Vielen Dank für die Idee, ich werde mir die Sache mal anschauen. Gruß Micha |
AW: UDP-Broadcast an alle außer an mich selbst
Hallo,
um nochmals au den Quellport zu kommen: Zitat:
Gruß, Chris |
AW: UDP-Broadcast an alle außer an mich selbst
Hallo Chris,
da muß ich Dich leider enttäuschen - das geht durchaus. Gruß Micha |
AW: UDP-Broadcast an alle außer an mich selbst
Hallo Micha,
danke erstmal für die Info. War mir neu. Nur irgendwie bekomme ich es nicht hin mit den Indy's. Ich schaffe es nicht dem Client den "SourcePort" vor zu geben. Einem Server kann ich diesen Port vorschreiben. Aber nicht einem IdUDPClient. Ich wollte es nachstellen um es zu verstehen. Gruß, Chris |
AW: UDP-Broadcast an alle außer an mich selbst
Hallo Chris,
ich verwende einen modifizierte Klasse von TIdUDPServer sowohl zum Senden als auch zum Empfangen der Broadcasts. Der Code dafür ist schon uralt und stammt aus diesem Forum: ![]() Gruß Micha |
AW: UDP-Broadcast an alle außer an mich selbst
Hallo Micha,
vielen Dank. Damit ist mir jetzt klar, dass dies keine Freundlichkeit von Windows ist, dass ein Port nicht mehrfach benutzbar ist, sondern es hat erstmal mit den Einstellungen zu tun wie ich einen Port "öffne". Und zusätzlich damit, dass die Indy's die Port's von Servern blockierend aufbauen. Danke dir für die Infos. Wieder was dazu gelernt. Gruß, Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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-2025 by Thomas Breitkreuz