Уменьшить количество потоков, когда клиент ушел - PullRequest
1 голос
/ 18 июня 2020

Я создал серверный код для 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. enter image description here

Когда я пытаюсь уменьшить количество потоков, появляется следующая ошибка: enter image description here

Как можно решить эту проблему? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...