UDP Broadcast sender

  • 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.

    Edited once, last by pc-freack (July 7, 2013 at 10:51 AM).

  • 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.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!