|
|
@ -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()
|
|
|
|
|
|
|
|
|