Micro Python usockets не истекает - PullRequest
1 голос
/ 08 марта 2020

По разным причинам я пытаюсь, чтобы мое устройство 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.

Есть ли что-то, чего я не понимаю о том, как это работает? Есть ли решение, которое очевидно, но я пропустил?

...