Python Socket - jak przekazac zmienna o zakoczeniu gry?

0

Witam mam taki problem iz moj server po teorytycznie otrzymaniu wiadomosci Gra zakonczona nie wylacza servera nie wiem jak przekzac zmienna czy ktos mogl by mi pomoc? KOD:

class ClientThread(threading.Thread):

    def __init__(self,connection):
        threading.Thread.__init__(self)
        self.connection = connection

    def run(self):
        try:
            # receive data from client - TCP
            data = self.connection.recv(1024)
            splited_data = data.split()
            print(splited_data)
            if data:
                check_database_connection()
                print ('received "%s"' % data)
                if check_if_user_exists(str(splited_data[2]), str(splited_data[3])):
                    # send data to client TCP
                    self.connection.sendall("OK")
                    status = True
                else:
                    self.connection.sendall("FAILED")
            random_array = get_random_numbers()
            if status:
                for number in random_array:
                    print(number)
                    self.connection.sendall(str(number))
                    answer = self.connection.recv(2)
                    print(answer)
                    if answer == 'T1':
                        pass
                    elif answer =='T2':
-----------------------> TU POWINNA BYC ZMIENNA COS TYPU is_game_over = TRUE <---------------------------------------
                        print("Gra skonczona!!")
                        self.connection.close()
                        break
                    time.sleep(2)
        finally:
            pass

class Server:

    def __init__(self,ip,port):
        self.ip = '127.0.0.1'
        self.port = 6666

    def start_server(self):
        # TCP socket
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # nie bedzie bledu address already in use
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        server_address = (self.ip, self.port)
        sock.bind(server_address)

        sock.listen(1)
        while True:
            connection, client_address = sock.accept()
            client = ClientThread(connection)
            client.start()
------------>TU WSTAWIC TA ZMIENNA A POTEM connection,close() <-----------------------------

Czy ktos ma pomysl jak to zrobic?

0

@Biały Kret - nie wyłącza, bo serwer ma pętlę nieskończoną i oczekuje na kolejnego klienta. Jeśli chcesz zrobić to programowo, to byś musiał zwracać coś od klienta, aby serwer się zatrzymał. Jeśli czegoś takiego nie potrzebujesz, a chcesz w łatwy sposób zabić proces serwera, to możesz spróbować wprowadzić KeyboardInterrupt, aby ubijać serwer z klawiatury.. ( http://stackoverflow.com/questions/34871191/cant-close-socket-on-keyboardinterrupt-python )

1 użytkowników online, w tym zalogowanych: 0, gości: 1