Как устранить зависание сокета?
Написал код для получения информации от esp32 через сокет. Пока соединение стабильное (wi-fi), информация поступает и все ок. Даже после прерывания скрипта-клиента через ctrl+c повторное подключение проходит нормально. Но если по каким-то причинам пропадет связь между десктопом и esp-шкой, то сокет "зависает" и подключиться к мк не получается. Я пока еще только начинаю пробовать писать такие скрипты и не понимаю, где искать ошибки, может вообще весь подход неверный. Подскажите, пожалуйста, что не так.
Скрипт на esp32:
import socket
from machine import Pin
import onewire
import ds18x20
ds_sensor = ds18x20.DS18X20(onewire.OneWire(Pin(4)))
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(('192.168.1.101', 9000))
server_socket.settimeout(10)
server_socket.listen(20)
while True:
client_socket, addr = server_socket.accept()
while True:
request = client_socket.recv(4096)
if not request:
break
else:
temp = "0"
roms = ds_sensor.scan()
ds_sensor.convert_temp()
for rom in roms:
temp = ds_sensor.read_temp(rom)
response = str(temp).encode()
client_socket.send(response)
Скрипт-клиент:
import socket
import time
host = "192.168.1.101"
port = 9000
sock = socket.socket()
sock.connect((host, port))
while True:
sock.send(bytes(1))
data = sock.recv(4096)
param_list = data.decode()
print(param_list)
time.sleep(1)