コード例 #1
0
class ClientThread(threading.Thread):
    def __init__(self, clientAddress, clientsocket):
        threading.Thread.__init__(self)
        self.csocket = clientsocket
        print("nova conexao: ", clientAddress)
        self.sinc = threading.Lock()
        self.bank = Bank()

    def run(self):
        print("Connected de :", clientAddress)
        print('run')
        '''
		DESCRIPTION:
			função criada para enviar e receber dados entre o cliente e servidor
		'''
        test = 1

        while (test != 0):

            dados = self.csocket.recv(1024).decode()
            message = dados.split('π∛')

            if message[0] == 'add_client':
                c = Client(message[1], message[2], message[3])
                if self.bank.get_client(message[3]) is False:
                    a = Account(message[4], c, message[5], message[6], '1000')
                    if self.bank.get_account(message[4]) is False:
                        self.bank.add_client(c)
                        self.bank.add_account(a)

                        print('Conta Criada Com Sucesso!')
                        self.csocket.send('True'.encode())
                    else:
                        print('Número de Conta Em Uso!')
                        self.csocket.send('False1'.encode())
                else:
                    print('CPF Em Uso!')
                    self.csocket.send('False2'.encode())

            elif message[0] == 'authenticated':  # Logar
                authenticated = self.bank.login(message[1], message[2])
                if authenticated is True:
                    print('Login Realizado Sucesso')
                    self.csocket.send('True'.encode())
                else:
                    print('Login Não Realizado!')
                    self.csocket.send('False'.encode())

            elif message[
                    0] == 'menuName':  # Mostrar o nome do usuario na tela de menu
                self.csocket.send(str(self.bank.nameAndSurname()).encode())

            elif message[
                    0] == 'menuBalance':  # Mostrar o saldo do usuario na tela de menu
                self.csocket.send(str(self.bank.menuBalance()).encode())

            elif message[0] == 'withdraw':  # Sacar
                self.sinc.acquire()
                account = self.bank.withdraw(message[1])
                if account == 'True':
                    self.csocket.send('True'.encode())
                    self.sinc.release()
                elif account == 'Negativo':
                    self.csocket.send('Negativo'.encode())
                    self.sinc.release()
                elif account == 'Indisponível':
                    self.csocket.send('Indisponível'.encode())
                    self.sinc.release()

            elif message[0] == 'deposit':  # Depositar
                self.sinc.acquire()
                account = self.bank.deposit(message[1])
                if account == 'True':
                    self.csocket.send('True'.encode())
                    self.sinc.release()
                elif account == 'Negativo':
                    self.csocket.send('Negativo'.encode())
                    self.sinc.release()

            elif message[0] == 'transfer':  # Transferir
                self.sinc.acquire()
                account = self.bank.transfer(message[1], message[2])
                if account == 'True':
                    self.csocket.send('True'.encode())
                    self.sinc.release()
                elif account == 'False':
                    self.csocket.send('False'.encode())
                    self.sinc.release()
                elif account == 'Negativo':
                    self.csocket.send('Negativo'.encode())
                    self.sinc.release()
                elif account == 'Inválido':
                    self.csocket.send('Inválido'.encode())
                    self.sinc.release()

            elif message[0] == 'extract':  # Extrato
                # account = self.bank.get_account_2()
                # extracts = account.extract.display_extract()
                # print('Tirou Extrato!')
                self.csocket.send(''.encode())

            elif message[0] == 'backLogin':
                self.bank.sairApp()
                self.csocket.send('True'.encode())

    def servClose(self):
        '''
		DESCRIPTION:
			Utilizado para fechar o servidor
		'''

        self.servSocket.close()
        print("Server finalizado.")