Python программа перестаёт реагировать после команды recv(1024)
Всем здравствуйте! Пытаюсь написать программу, с помощью которой множество клиентов подключатся к серверу, а сервер в свою очередь может выбрать с каким из клиентов взаимодействовать. Всё работает до момента, как я в каком-либо виде применяю команду c.recv(1024), где c содержит s.accept(). После выполнения данной команды программа (в моём случае - тред) перестаёт подавать признаки жизни. Код сервера прилагается
import socket
from _thread import start_new_thread
host = "хост"
port = 4444
threads = []
thread_num = 0
cur_thread = -1
main_command = []
# command = ""
def threaded(c, thr_id):
global cur_thread
id = thr_id
while True:
try:
data = c.recv(1024).decode("utf8")
if main_command[1] == 0:
print(0)
command = input(str(id) + "> ")
c.send(command.encode())
except socket.error as e:
print("Тред " + str(thr_id) + " завершён")
del threads[thr_id]
break
except Exception as e:
print("Тред " + str(thr_id) + " завершён")
del threads[thr_id]
break
if data:
print(data)
# file.write(data)
# c.send(bytes(message.encode("utf8")))
if not data:
break
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)
while True:
sock, addr = s.accept()
print('Connected to :', addr[0], ':', addr[1])
thread_num = len(threads)
test = start_new_thread(threaded, (sock, thread_num))
threads.append(test)
print("Current run threads:" + str(threads))
#cur_thread = 0
cmd = input()
if cmd.startswith("run"):
main_command = cmd.split(' ')
cur_thread = int(main_command[1])
#print(cur_thread)