ich würde gerne mit Hilfe eines UDP Broadcast die Adressen aller Geräte in einem Netzwerk herausfinden.
Als Beispiel: Ich sende eine Nachricht, z.B. "Ping" an jedes Gerät im Netzwerk und ich will dann, dass diese Geräte mir mit ihrer IP-Adresse antworten.
Durch einige Tutorials und Guides bin ich jetzt soweit gekommen:
Code: Alles auswählen
from socket import *
import time
import threading
port = 5002
class PingerThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
print('start thread')
s = socket(AF_INET, SOCK_DGRAM)
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
time.sleep(0.1)
s.sendto('Ping'.encode('utf-8'), ("255.255.255.255", port))
a = PingerThread()
a.start()
try:
s = socket(AF_INET, SOCK_DGRAM)
s.bind(('', port)
except:
print('failed to bind')
s.close()
raise
s.blocking(0)
data = s.recvfrom(1024)
print(data)
s.close()
if __name__ == "__main__":
PingerThread().run()
Die Frage die ich mir jetzt stelle ist ob der Code richtig ist und das Problem eher an meinem Router und den Freigaben liegt oder ob der Code falsch ist.
Danke schonmal im Voraus :=)