У меня есть небольшая консоль python, которая работает через UDP.У меня проблема в том, что если я внезапно отключаюсь от клиента, соединение остается открытым в netstat (потому что это UDP).
Я попытался реализовать threading.Timer
на сервере, который запрашивает соединениеактивен, и если клиент не отвечает в течение этого времени, соединение закрывается со стороны сервера.
Это то, что я пытался
def check_conn(sock: socket.socket):
# sock.settimeout()
sock.send(b"\nAwake?")
try:
ack = sock.recv(1024)
ack = ack.decode("UTF-8")
if ack.strip() == "Yea":
pass
else:
sock.close()
except:
sock.close()
so = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
so.connect((host, port))
t = threading.Timer(10.0, check_conn, [so])
t.start()
data = so.recv(1024)
#rest of the main program
У меня проблема в том, чточто когда он запрашивает пароль, два so.recv(1024)
открыты, и он не знает, как с ними обращаться (это мое предположение).