UDP Broadcast sender

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe in Python eine Funktion, die auf einem bestimmten Port per UDP
    einen Broadcast erstellt und dort dann seine eigene IP und den Port sendet.
    Nun möchte ich diese Daten auf jedem PC im Netzwerk empfangen.

    Folgende Funktion habe ich:

    Jedoch wird scheinbar nichts versendet.
    Habe mit netcat den Lokalen Port bereits überwacht jedoch passiert nichts.
    Auch unter Windows kommt unter diesem Port nichts an.
    Es treten während der Laufzeit auch keine Fehler auf.
    Wäre super, wenn ihr ein paar Ideen für die Behebung meines Problems habt.

    MfG pc-freack

  • Dann bekomme ich folgende Fehlermeldung:

    Code
    <function Broadcast at 0x2340e30>
    Traceback (most recent call last):
      File "/var/www/Broadcast.py", line 20, in Broadcast
        s.sendto(data, dest)
    socket.error: [Errno 101] Network is unreachable
  • Nun sieht meine Funktion so aus:

    Code
    def Broadcast():
        printValue("Broadcast started.")
        s = socket(AF_INET, SOCK_DGRAM)
        s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
        s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
        s.sendto('Das ist ein Test', ('255.255.255.255', 10100))


    aber es kommt immer noch die selbe Fehlermeldung:

    Code
    <function Broadcast at 0x1277e70>
    Traceback (most recent call last):
      File "/var/www/Broadcast.py", line 162, in Broadcast
        s.sendto('Das ist ein Test', ('255.255.255.255', 10100))
    socket.error: [Errno 101] Network is unreachable

    EDIT: Ich habe gerade mal mein Netzwerkkabel eingesteckt beim RPI, weil ich das zur Zeit per WLAN mache
    und jetzt funktioniert es plötzlich. Zumindest kommt keine Fehlermeldung mehr.
    Aber ich möchte das aber über das WLAN laufen lassen.

    Einmal editiert, zuletzt von pc-freack (7. Juli 2013 um 10:51)

    • Offizieller Beitrag

    s.bind((IP,PORT)) bindet leider nur den Socket nicht das Interface. Unter Windows klappt das tadelos, dort bindet die IP das dazugehörige Interface unter Linux wirdvas mittels routing entschieden. Allerdings wäre es einen Versuch dein Leerstring in deinem s.bind() durch die IP der WLAN karte zu ersetzen.

  • Hab ich bereits versucht jedoch scheitert dies auch.
    Ich habe es aber jetzt so, das wenn das Netzwerkkabel angeschlossen wird,
    sofort der Broadcast über das Netzwerk beginnt.
    Wenn kein Netzwerk, sondern mein Rechner direkt per WLAN mit dem RPI
    verbunden ist, erkennt das automatisch meine Software unter Windows und sucht nicht
    nach dem Broadcast, sondern verbindet sich direkt über WLAN mit dem Server auf dem RPI.
    Das war jetzt für mich die einfachste Lösung.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!