diff --git a/Servidor/ServidorCajero.py b/Servidor/ServidorCajero.py index e6f44dd..c8bbd1b 100644 --- a/Servidor/ServidorCajero.py +++ b/Servidor/ServidorCajero.py @@ -6,18 +6,19 @@ PORT = 2002 MAX_CONNECTIONS = 3 MAX_DINERO = 120000 connections = 0 -max_connections_reached = False # Add a flag for max connections reached +max_connections_reached = False +dinero_lock = threading.Lock() def handle_client(client_socket, addr): global connections global MAX_DINERO - print(f"cliente conectado {addr})") - connections += 1 - if connections > MAX_CONNECTIONS: + if connections >= MAX_CONNECTIONS: response = "Maximo numero de conexiones alcanzado. Por favor intente mas tarde." client_socket.sendall(response.encode('utf-8')) client_socket.close() return + print(f"cliente conectado {addr})") + connections += 1 print(f"Conexiones activas: {connections}") try: while True: @@ -37,14 +38,15 @@ def handle_client(client_socket, addr): command, amount = decoded_data.split() amount = int(amount) if command.lower() == 'retirar': - if amount <= MAX_DINERO: - MAX_DINERO -= amount - response = f"Retiro Existoso." - print("Retiro Existoso.") - print(f"Saldo restante: {MAX_DINERO}") - else: - response = "Saldo insuficiente por favor intente mas tarde." - print("Saldo insuficiente para operacion.") + with dinero_lock: + if amount <= MAX_DINERO: + MAX_DINERO -= amount + response = f"Retiro Existoso." + print("Retiro Existoso.") + print(f"Saldo restante: {MAX_DINERO}") + else: + response = "Saldo insuficiente por favor intente mas tarde." + print("Saldo insuficiente para operacion.") client_socket.sendall(response.encode('utf-8')) elif command.lower() == 'exit': break @@ -66,5 +68,4 @@ while True: if connections < MAX_CONNECTIONS: client_socket, addr = s.accept() client_thread = threading.Thread(target=handle_client, args=(client_socket, addr)) - client_thread.start() - + client_thread.start() \ No newline at end of file