Añadiendo elemento lock al servidor y cambio pequeño para que no suben el numuero de conexiones cuando alcanza al maximo

master
vicsash 7 months ago
parent 6821bfcde1
commit d3d821cbae

@ -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()
Loading…
Cancel
Save

Powered by INFORMATICA.FP.EDU.ES.