Ich habe ein Gerät im Netzwerk, dass mit UDP auf den Port 23000 und Adresse 0.0.0.0 lauscht. Wenn ich mit boost:asio an die Adresse 0.0.0.0 einen Broadcast schicke, kommt dieser nicht an. Wenn ich den Endpoint "boost::asio::ip::address_v4::broadcast()" nutze, kommt der Broadcast auch nicht an. Er kommt nur an, wenn ich meine IP-Adresse nehme und die letzte Zahl durch 255 ersetze. Jetzt muss ich irgendwie meine eigene IP-Adresse herausfinden, die Maske herausfinden und dass durch die passende Zahl ersetzen (welche eigentlich?). Geht das nicht einfacher? Ebenso finde ich keine Methode, um meine eigene IP-Adresse herauszufinden.
Hier gibt's ein paar Grundlagen: https://de.wikihow.com/Die-Netzwerk-und-die-Broadcast-Adresse-berechnen > boost::asio::ip::address_v4::broadcast() Mit welchen Parametern initialisiert? Ansonsten, deprecated: https://www.boost.org/doc/libs/1_82_0/doc/html/boost_asio/reference/ip__network_v4.html
:
Bearbeitet durch User
Keine A. schrieb: > Ein UDP Broadcast ist deprecated? Nein. die "broadcast()"-Methode von der "address_v4". Das ist natürlich nicht die Lösung für dein Problem, ich wollte dich nur darauf hinweisen. Deshalb hatte ich "Ansonsten:" vorangestellt.
:
Bearbeitet durch User
Keine A. schrieb: > Ich habe ein Gerät im Netzwerk, dass mit UDP auf den Port 23000 und > Adresse 0.0.0.0 lauscht. D.h. der Dienst läuft auf dem Gerät quasi auf allen verfügbaren Interfaces, wobei jedes Interface in einem unterschiedlichen Sub-Netz sein könnte. > Wenn ich mit boost:asio an die Adresse 0.0.0.0 einen Broadcast schicke, > kommt dieser nicht an. Wenn ich den Endpoint > "boost::asio::ip::address_v4::broadcast()" nutze, kommt der Broadcast > auch nicht an. Hmm, na ja, wie von den anderen schon erwähnt, Broadcasts schickste normalerweise immer an die 255. Bei nem Klasse C-Netz eben an die 192.168.<subnet>.255. Ansonsten hängts, wie du selber schon geschrieben hast, eben von der Netzmaske ab, was dein Broadcast wird. > Er kommt nur an, wenn ich meine IP-Adresse nehme und die letzte Zahl > durch 255 ersetze. > > Jetzt muss ich irgendwie meine eigene IP-Adresse herausfinden, die Maske > herausfinden und dass durch die passende Zahl ersetzen (welche > eigentlich?). Formulier mal anders, was du eigentlich bezwecken willst. Aktuell versteh ich deinen Anwendungsfall so, dass dein einen Broadcast in die weite LAN-Welt schicken um zu erkennen, ob das spezifische Gerät up ist und der Server-Socket auf Verbindungen wartet? > Geht das nicht einfacher? Ebenso finde ich keine Methode, um meine > eigene IP-Adresse herauszufinden. Wofür brauchste die denn so genau bzw. was versprichst du dir davon? Angenommen du hast ein WLAN Klasse-C im 179er Netz und dein Server läuft aber auf nem Ethernet-Teilnehmer im 178er Netz. Irgendwo dazwischen wird dann eine Adressübersetzung gemacht - deine Client-IP hilft dir da doch nicht wirklich viel. Wenn die Verbindung zum Server-Socket da ist, ist doch gut - wat willste dann damit? Und mal anders gefragt: wäre es nicht einfacher, beim DHCP deinen Server mit fester IP zu registrieren und den Socket abzuklopfen, ob er oben ist oder nicht?
Keine A. schrieb: > Ich habe ein Gerät im Netzwerk, dass mit UDP auf den Port 23000 und > Adresse 0.0.0.0 lauscht. Das glaube ich nicht. Auf Adresse 0.0.0.0 zu lauschen wäre höchst ungewöhnlich. Normalerweise wird die Adresse 0.0.0.0 benutzt, um dem Netzwerkstack mitzuteilen, dass auf ALLEN Adressen gelauscht werden soll. LG, Sebastian
Falk S. schrieb: > Klasse C-Netz Gibt es seit 30 Jahren nicht mehr. Selbst das Mobilfunk-C-Netz gab es länger. 😂
Beitrag #7393196 wurde vom Autor gelöscht.
Ich habe auch mal "Brutalo-Broadcasts" per UDP in einem kleinen Insel-LAN (nur 3 Teilnehmer) verschickt, weil die beteilgten Zulieferer mit den Angaben zu den IP-Adressen terminlich nicht "aus dem Knick" kamen und die Zeit drängte. Dafür habe ich als Zieladresse 255.255.255.255 beutzt und als Ziel-MAC auch noch ff:ff:ff:ff:ff:ff. Hat tadellos funktioniert, jeder konnte es empfangen.
Also komme ich zum Schluss, dass ich Anhand meiner Konfiguration der IP-Adresse und Netzmaske die Broadcastadresse errechnen kann. Alle Bits der Netzmaske die 0 sind, muss ich demnach in der IP-Adresse auf 1 setzen?
Keine A. schrieb: > Also komme ich zum Schluss, dass ich Anhand meiner Konfiguration > der > IP-Adresse und Netzmaske die Broadcastadresse errechnen kann. Alle Bits > der Netzmaske die 0 sind, muss ich demnach in der IP-Adresse auf 1 > setzen? Ja, aber ... Die Broadcast-Adresse ist immer die höchste IP-Adresse in dem jeweiligen Subnet. Ich habe jedoch die praktische Erfahrung gemacht, dass es nicht zuverlässig funktioniert, zumindest nicht bei ESP8266 (in Form von Wemos D1 Mini). Ein Wemos als WLAN-AP gibt sich selbst z.B. die 192.168.4.1 und per DHCP an seine Clients die Hostadressen 2..7 (max. 8 Teilnehmer insgesamt). Das ist wohl durch die begrenzten Kapazitäten des ESP bedingt. Trotzdem reicht er per DHCP eine Subnetzmaske "255.255.255.0" aus, so dass die Broadcastadresse eigentlich die 192.168.4.255 sein sollte ... Funzte (bei mir) aber nicht bzw. extrem unzuverlässig, während die Sensordaten mit 255.255.255.255 immer zuverlässig ankommen. Also was solls ..
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.