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

master
vicsash 10 months ago
parent 6821bfcde1
commit d3d821cbae

@ -6,18 +6,19 @@ PORT = 2002
MAX_CONNECTIONS = 3 MAX_CONNECTIONS = 3
MAX_DINERO = 120000 MAX_DINERO = 120000
connections = 0 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): def handle_client(client_socket, addr):
global connections global connections
global MAX_DINERO global MAX_DINERO
print(f"cliente conectado {addr})") if connections >= MAX_CONNECTIONS:
connections += 1
if connections > MAX_CONNECTIONS:
response = "Maximo numero de conexiones alcanzado. Por favor intente mas tarde." response = "Maximo numero de conexiones alcanzado. Por favor intente mas tarde."
client_socket.sendall(response.encode('utf-8')) client_socket.sendall(response.encode('utf-8'))
client_socket.close() client_socket.close()
return return
print(f"cliente conectado {addr})")
connections += 1
print(f"Conexiones activas: {connections}") print(f"Conexiones activas: {connections}")
try: try:
while True: while True:
@ -37,14 +38,15 @@ def handle_client(client_socket, addr):
command, amount = decoded_data.split() command, amount = decoded_data.split()
amount = int(amount) amount = int(amount)
if command.lower() == 'retirar': if command.lower() == 'retirar':
if amount <= MAX_DINERO: with dinero_lock:
MAX_DINERO -= amount if amount <= MAX_DINERO:
response = f"Retiro Existoso." MAX_DINERO -= amount
print("Retiro Existoso.") response = f"Retiro Existoso."
print(f"Saldo restante: {MAX_DINERO}") print("Retiro Existoso.")
else: print(f"Saldo restante: {MAX_DINERO}")
response = "Saldo insuficiente por favor intente mas tarde." else:
print("Saldo insuficiente para operacion.") response = "Saldo insuficiente por favor intente mas tarde."
print("Saldo insuficiente para operacion.")
client_socket.sendall(response.encode('utf-8')) client_socket.sendall(response.encode('utf-8'))
elif command.lower() == 'exit': elif command.lower() == 'exit':
break break
@ -66,5 +68,4 @@ while True:
if connections < MAX_CONNECTIONS: if connections < MAX_CONNECTIONS:
client_socket, addr = s.accept() client_socket, addr = s.accept()
client_thread = threading.Thread(target=handle_client, args=(client_socket, addr)) 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.