MicroPython usockets未超时
出于各种原因,我试图让我的带有MicroPython的ESP32设备轮询192.168.1.*:79的所有256个选项,以查找“主机”PC。在这样做时,ESP32尝试创建一个套接字并将其连接到每个可能的地址,即:MicroPython usockets未超时,python,multithreading,sockets,blocking,micropython,Python,Multithreading,Sockets,Blocking,Micropython,出于各种原因,我试图让我的带有MicroPython的ESP32设备轮询192.168.1.*:79的所有256个选项,以查找“主机”PC。在这样做时,ESP32尝试创建一个套接字并将其连接到每个可能的地址,即: while not connected: try: addr = generate_next_address() s = usocket.socket() s.connect(addr) except OSError: s.close()
while not connected:
try:
addr = generate_next_address()
s = usocket.socket()
s.connect(addr)
except OSError:
s.close()
continue
print("Found a connection!")
connected = True
当尝试向拒绝connect()
的设备发送连接时,会很快抛出异常并继续。然而,问题是当它开始遇到没有响应或不存在的设备时,它会等待很长一段时间才超时
现在,我已经尝试了使用usocket.settimeout()
、usocket.setblocking()
、uselect.poll()
、和time.delay()
的各种方法,但我无法获得任何更改超时时间的方法
通过将blocking设置为false,脚本立即尝试所有256个地址,然后中断while循环,不允许正确连接。打开阻塞会完全忽略我尝试的任何超时设置,持续15-20秒超时,而不是1秒
有什么我不明白的吗?有没有一个显而易见但我却错过了的解决方案