Я создал серверный код для sh установления соединения между несколькими клиентами. Когда клиент подключился, новый поток начнет определять номер клиента. Однако, когда клиент ушел, номер потока должен уменьшиться на 1, поскольку это означает, что количество клиентов уменьшилось, но, к сожалению, я столкнулся с некоторыми проблемами при уменьшении количества потоков.
Вот мой код сервера: Мой номер потока = ThreadCount
import socket
import os
from _thread import *
ServerSocket = socket.socket()
host = ''
port = 1233
ThreadCount = 0
try:
ServerSocket.bind((host, port))
except socket.error as e:
print(str(e))
print('Waitiing for a Connection..')
ServerSocket.listen(5)
def threaded_client(connection):
connection.send(str.encode('Welcome to the Server\n'))
ClientNo = " You are Client:" + str(ThreadCount)
connection.sendall(str.encode(ClientNo))
while True:
data = connection.recv(2048)
data1 = data.decode('utf-8')
reply = 'Server Says: ' + data1
if (data1 == "exit"):
print("One Client is left" + str(ThreadCount))
break
connection.sendall(str.encode(reply))
connection.close()
while True:
Client, address = ServerSocket.accept()
start_new_thread(threaded_client, (Client,))
ThreadCount += 1
print('Connected to: ' + address[0] + ':' + str(address[1]) + " | Thread: " + str(ThreadCount) + " | Client: " + str(ThreadCount))
ServerSocket.close()
Это ответ: Когда клиент ушел, количество потоков осталось таким же, как 2.
Когда я пытаюсь уменьшить количество потоков, появляется следующая ошибка:
Как можно решить эту проблему? Спасибо