UDP Socket

Moin !

ich sende von einigen Boards UDP Packete als Broadcast (255.255.255.255)

Mit IPS@Win kann ich die problemlos lesen, aber mit IPS@RasPI bekomme ich das mit gleichen Einstellungen nicht hin.

Konfiguration ist relativ simpel:
UDP-Socket, da habe ich Empfangshost und -port eingestellt (im Debug kommt schon nichts an, obwohl Socket geöffnet wurde)

eine RegVar auf dem Socket, die mit einem Skript verbunden wurde triggert das Skript nie.

Kann es sein, dass der UDP Socket unter RasPI nicht richtig funktioniert ?

Hallo

Was passiert, wenn du an die Broadcast Adresse des Netzwerkes sendest?

z.B. beim Netzwerk 192.168.1.0/24 an 192.168.1.255

Nein, das geht auch nicht. Es geht nur, wenn ich direkt an die IPS-IP sende, also z.B. an 192.168.1.22

Sende ich an 192.168.1.255, so bekomme ich das Ergebnis nur in IPS@Win

Sind broadcasts bei der IPS@Raspi Version irgendwie blockiert ?

Mal ne Frage:
wenn ich mit 192.168.178.255 etwas sende, erreicht das dann ALLE Clients, die auf dem Port horchen, oder nur den ersten ?

habe ich auch schon bemängelt … das Empfangen von Broadcast wurde mittlerweile schon gefixt.

Das Interface zwischen IO-Instanzen und Splitter/Geräten gibt es einfach nicht her, da nur rein der Textstring von Nutzdaten über geben wird. Und das Interface muss auch z.b. zu nicht IP-IOs wie z.B. seriellen Ports irgendwie kompatibel sein.
Aber vielleicht spendiert uns Paresy ja eine zusätzliches Interface mit IP der Gegenseite für die Module :slight_smile:
Michael

Hm - die Posts verstehe ich irgendwie nicht. Kann denn jemand auf dem RasPI mit dem UDP Socket Broadcasts capturen :confused:

also ich bekomme das nur unter Windows hin.

Ich habe jetzt auf dem RasPI mit „nc -luv 2701“ gelauscht - da sehe ich die Broadcasts. Es scheint da ein Problem mit dem UDP Socket auf dem RasPI zu geben

ich glaube jetzt, es ist ein Problem der Symcon-Version auf dem RasPI oder aber auf dem raspi ist irgendwie so etwas eine Firewall, von der ich nichts weiß…

Könnte mal jemand das nachstellen:
auf dem IPS@Raspi einen UDP Socket anlegen, Ports jeweils 6666 (Sendehost egal)

dann von irgendeinem anderen Gerät (linux) folgendes absetzen:

echo Kuckuck|nc -u <raspi-ip> 6666
echo Kuckuck|nc -u 255.255.255.255 6666

bei mir kommt der BC nicht durch

echo Kuckuck|nc -u 192.168.1.10 6666 von anderen Pi.

liefert im Debug vom UDP Socket:

16:11:57 RECEIVED Kuckuck

Hi Thomas - ja, das gent bei mir auch. Was passiert denn bei der IP 255.255.255.255 ?

Nicht weiter gesucht, nur probiert :
root@odroidc1-001e06c090bd:~# echo Kuckuck|nc -u 255.255.255.255 6666
(UNKNOWN) [255.255.255.255] 6666 (?) : Permission denied

Hm…„permission denied“ als root ist ja auch komisch.

Und:
echo Kuckuck|nc -u 192.168.1.255 6666 ?

Ich habe jetzt einige Stunden hin und her probiert, Ergebnis:

auch mit nc schaffe ich es nicht, broadcasts zwischen 2 Debiansystemen auszutauschen. nc hat eine vielversprechende Option „-b“, aber auf meinem Raspi geht die mit udp auch nicht. Im Netz lese ich, dass dieses problem wohl viele haben.

aber mit socat geht das problemlos:
Sendehost: socat - udp-sendto:192.168.178.255:6666,broadcast
Empfangshost: socat -u udp-recv:6666,reuseaddr -

Die Pakete purzeln problemlos rein.

Ich denke, dass der UDP Socket auf dem Raspi in IPS ohne Berechtigung für broadcasts geöffnet wird - Paresy, kannst du das bestätigen ? Vielleicht lässt sich das ja sogar ändern, wenn es nicht beabsichtigt ist ?

Grüße,
Tom :loveips:

Habe das Problem, danke ich, zum nächsten Update gelöst!

paresy

Danke Du ! :slight_smile:

(Meinst du, es wäre sinnvoll, die Senderip mit RECEIVED DATA mit auszugeben ? Ich kann sie zwar immer ins Paket packen, aber eigentlich ist das ja auch nur unnötiger Traffic - für broadcasts wäre das eigentlich ja ganz sinnig)

Habe mir eben das gestrige update 21bfd93a gezogen, dort steht „udp broadcasts“ fixed.

Leider kommen die bei mir aber trotzdem nicht durch. Es geht NUR die richtige IP. Mit 192.168.178.255 und 255.255.255.255 kommt nix