Hallo zusammen,
Ich habe da ein Problem, was ich nicht verstehe.
Ich sende einen UDP Broadcast und möchte die Antwort dann entsprechend auswerten.
Nur: Ich bekomme immer nur die gesendete Nachricht zurück, aber nicht die Antwort.
Kann mir jemand sagen, was hier falsch läuft?
if options.status:
resp=[] #starts the response object
resp.append(252) #0xFC resp.append(5) resp.append(255)
resp.append(48)
resp.append(1)
resp.append(10)
resp.append(42)
resp = bytearray(resp) #forms response object into a byte to be sent out
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) s.settimeout(5)
s.bind(("", 8888))
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True)
s.sendto(resp, ("192.168.188.255", 8888))
try:
response = s.recvfrom(1024)
print response
except socket.timeout:
print "Timeout."
s.close()
Alles anzeigen
Ausgabe ist dann:
Das ist aber die Nachricht (in Hex eben), die ich via Broadcast gesendet habe.
Laut tcpdump funktioniert aber alles wie gewollt. Ich sende 7 Bytes und bekomme 148 zurück. Warum ist nicht die Antwort in der Variable "response" sondern die gesendete Nachricht? Irgenwie raff ich das nicht...
Machen will ich das, was hier beschrieben ist: https://github.com/GregoryDosh…amScreen-Service/issues/4
Und wie man im tcpdump sieht, kommt auch genau das zurück. Bloss halt nicht in die Variable, in die ich diese Nachricht haben will.
Jemand Erfahrung mit sowas??? Hilfe!
Grüße