2
0
mirror of https://github.com/softScheck/tplink-smartplug synced 2026-01-11 23:38:46 +01:00

Binding reply receive socket before send request.

Reply maybe comes fast while we are busy updating the screen or closing the
request socket, in this case replay is missed.
This commit is contained in:
Xiaolan.Lee
2016-09-23 15:45:08 +08:00
parent c59d92c202
commit c5eaa41b64

View File

@@ -181,6 +181,10 @@ tddp_packet = "".join([tddp_ver, tddp_type, tddp_code, tddp_reply, tddp_length,
tddp_digest = hashlib.md5(binascii.unhexlify(tddp_packet)).hexdigest() tddp_digest = hashlib.md5(binascii.unhexlify(tddp_packet)).hexdigest()
tddp_packet = tddp_packet[:24] + tddp_digest + tddp_packet[56:] tddp_packet = tddp_packet[:24] + tddp_digest + tddp_packet[56:]
# Binding receive socket in advance in case reply comes fast.
sock_receive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_receive.bind(('', port_receive))
# Send a request # Send a request
sock_send = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock_send = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_send.sendto(binascii.unhexlify(tddp_packet), (ip, port_send)) sock_send.sendto(binascii.unhexlify(tddp_packet), (ip, port_send))
@@ -191,8 +195,6 @@ print "Request Data:\tVersion", t[0:2], "Type", t[2:4], "Status", t[6:8], "Lengt
sock_send.close() sock_send.close()
# Receive the reply # Receive the reply
sock_receive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_receive.bind(('', port_receive))
response, addr = sock_receive.recvfrom(1024) response, addr = sock_receive.recvfrom(1024)
r = response.encode('hex') r = response.encode('hex')
if args.verbose: if args.verbose: