1
我想发送一些数据到传感器,如果python脚本没有收到数据我希望接收函数超时并重新发送数据。如果没有数据接收,Python UDP套接字重新发送数据
def subscribe():
UDP_IP = "192.168.1.166"
UDP_PORT = 10000
MESSAGE = '6864001e636caccf2393730420202020202004739323cfac202020202020'.decode('hex')
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
recieve_data = recieve()
if recieve_data == subscribe_recieve_on or recieve_data == subscribe_recieve_off:
logging.info('Subscribition to light successful')
else:
logging.info('Subscribition to light unsuccessful')
def recieve():
UDP_IP = "192.168.1.118"
UDP_PORT = 10000
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
data, addr = sock.recvfrom(1024)
return data.encode('hex')
subscribe()
在它被卡在接收功能,如果它没有接收到任何数据的时刻:但是我希望它如后超时
data, addr = sock.recvfrom(1024)
2秒钟并重新运行subscribe()函数。
我试过使用一段时间的真正的语句与超时和尝试/例外,但是我得到一个当前正在使用的端口,即使关闭端口。也感觉这种方式很混乱。
任何想法,将不胜感激。