У меня есть сигнал тревоги, который я хочу запустить в oop. Я хочу иметь возможность запускать и останавливать это l oop удаленно, используя сокеты. У меня проблемы с постоянным прослушиванием команд и включением и отключением этой тревоги l oop.
Есть несколько похожих постов, на которые нет ответов:
Как сделать непрерывное «while l oop» в Python с сокетом, слушающим и ожидающим каждый раз?
Python сокет: попытка получить новое сообщение TCP в течение времени l oop
Проблема в том, что через некоторое время сокет l oop и позволяет запустить аварийный сигнал l oop, но теперь я не могу получить сообщение об остановке , Как мне продолжать слушать, чтобы включить или выключить сигнал тревоги l oop? Ниже моя попытка увидеть, есть ли новые данные (STOP), но затем он останавливает сигнал тревоги l oop для прослушивания входящих сообщений.
import time
import socket
import sys
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
mysock.bind(("", 1234))
except:
print("Failed to bind")
sys.exit()
mysock.listen(5)
while True:
conn,addr = mysock.accept()
data = conn.recv(1000)
state = b"ALARM OFF"
print(data)
if not data:
break
if data == b'ALARM ON':
state = b"ALARM ON"
print(state)
if data == b'SILENT':
state = b"ALARM OFF"
print(state)
while state == b"ALARM ON":
print("BEEP BEEP BEEP")
conn,addr = mysock.accept()
new_data = conn.recv(1000)
print(new_data)
if new_data:
state == new_data
print(state)
conn.sendall(state)
conn.close()
mysock.close()