По разным причинам я пытаюсь, чтобы мое устройство ESP32 с Micro Python опрашивало все 256 опций 192.168.1. *: 79, чтобы найти «хост» P C. При этом ESP32 пытается создать сокет и подключить его к каждому возможному адресу, а именно:
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()
, это происходит очень быстро. бросить исключение и двигаться дальше. Однако проблема в том, что когда он начинает сталкиваться с устройствами, которые либо не отвечают, либо не существуют, он ждет значительное время, прежде чем истечет время ожидания.
Теперь я попробовал все варианты использования * 1007. *, usocket.setblocking()
, uselect.poll()
и time.delay()
, но мне не удалось получить что-либо, чтобы изменить период ожидания.
Установив блокировку на false, скрипт немедленно пытается выполнить все 256 адресов, а затем разрывает время от времени l oop, исключая возможность правильного подключения. При блокировке полностью игнорируется любая настройка тайм-аута, которую я пытаюсь, продолжая занимать 15-20 секунд до тайм-аута, в отличие от 1.
Есть ли что-то, чего я не понимаю о том, как это работает? Есть ли решение, которое очевидно, но я пропустил?