parent
c0fb239118
commit
ff3566fec7
@ -1,22 +0,0 @@
|
||||
import socket
|
||||
|
||||
HOST = '192.168.50.166'
|
||||
PORT = 2005
|
||||
|
||||
while True:
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
||||
server_address = (HOST, PORT)
|
||||
s.connect(server_address)
|
||||
command = input("Entra comando (retirar o 'exit' para salir): ")
|
||||
if command.lower() == 'exit':
|
||||
break
|
||||
elif command.lower() == 'retirar':
|
||||
amount = input("Entera la cantidad de dinero: ")
|
||||
message = f"{command} {amount}"
|
||||
else:
|
||||
print("Comando no reconocido")
|
||||
print('Mandando {!r}'.format(message))
|
||||
s.sendall(message.encode('utf-8'))
|
||||
print('Esperando la respuesta')
|
||||
data = s.recv(1024) # línea bloqueante
|
||||
print('recibido {!r} de {}'.format(data.decode('utf-8'), server_address))
|
@ -1,22 +0,0 @@
|
||||
import socket
|
||||
|
||||
HOST = '192.168.50.166'
|
||||
PORT = 2005
|
||||
|
||||
while True:
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
||||
server_address = (HOST, PORT)
|
||||
s.connect(server_address)
|
||||
command = input("Entra comando (retirar o 'exit' para salir): ")
|
||||
if command.lower() == 'exit':
|
||||
break
|
||||
elif command.lower() == 'retirar':
|
||||
amount = input("Entera la cantidad de dinero: ")
|
||||
message = f"{command} {amount}"
|
||||
else:
|
||||
print("Comando no reconocido")
|
||||
print('Mandando {!r}'.format(message))
|
||||
s.sendall(message.encode('utf-8'))
|
||||
print('Esperando la respuesta')
|
||||
data = s.recv(1024) # línea bloqueante
|
||||
print('recibido {!r} de {}'.format(data.decode('utf-8'), server_address))
|
@ -1,36 +1,61 @@
|
||||
import socket
|
||||
import threading
|
||||
|
||||
HOST = ''
|
||||
PORT = 2005
|
||||
MAX_CONNECTIONS = 2
|
||||
MAX_CONNECTIONS = 3
|
||||
MAX_DINERO = 120000
|
||||
connections = 0
|
||||
#pip install six
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
||||
s_addr = (HOST, PORT)
|
||||
s.bind(s_addr)
|
||||
s.listen(MAX_CONNECTIONS)
|
||||
while True:
|
||||
if connections >= MAX_CONNECTIONS:
|
||||
print('Maximo de conexiones alcanzado, esperando a que se libere una conexion.')
|
||||
continue
|
||||
client_socket, addr = s.accept()
|
||||
connections += 1 # Increment connections after the check
|
||||
with client_socket:
|
||||
max_connections_reached = False # Add a flag for max connections reached
|
||||
|
||||
def handle_client(client_socket, addr):
|
||||
global connections
|
||||
global MAX_DINERO
|
||||
global max_connections_reached # Access the global flag
|
||||
print(f"cliente conectado {addr})")
|
||||
connections += 1
|
||||
if connections < MAX_CONNECTIONS:
|
||||
max_connections_reached = False # Reset the flag when connections drop below max
|
||||
print(f"Conexiones activas: {connections}")
|
||||
client_socket.settimeout(60) # Set a timeout of 60 seconds
|
||||
while True:
|
||||
try:
|
||||
datos = client_socket.recv(1024)
|
||||
if not datos:
|
||||
connections -= 1
|
||||
break
|
||||
print('Cliente connectetado y datos enviados : {} bytes de {}'.format(len(datos), addr))
|
||||
command, amount = datos.decode('utf-8').split()
|
||||
print("No data received from client. Closing connection.")
|
||||
break # Close the connection when no data is received
|
||||
decoded_data = datos.decode('utf-8')
|
||||
if ' ' in decoded_data:
|
||||
command, amount = decoded_data.split()
|
||||
amount = int(amount)
|
||||
if command.lower() == 'retirar':
|
||||
print('retiro exitoso')
|
||||
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."
|
||||
client_socket.sendall(response.encode('utf-8'))
|
||||
print('enviados {} bytes de vuelta a {}'.format(len(response), addr))
|
||||
else:
|
||||
print(f"Received unexpected data: {decoded_data}")
|
||||
except socket.timeout:
|
||||
print("Client did not send data within the timeout period.")
|
||||
connections -= 1
|
||||
print(f"Conexiones activas: {connections}")
|
||||
client_socket.close()
|
||||
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
||||
s_addr = (HOST, PORT)
|
||||
s.bind(s_addr)
|
||||
s.listen(MAX_CONNECTIONS)
|
||||
while True:
|
||||
if connections >= MAX_CONNECTIONS:
|
||||
if not max_connections_reached: # Only print the message if the flag is False
|
||||
print('Maximo de conexiones alcanzado, esperando a que se libere una conexion.')
|
||||
max_connections_reached = True # Set the flag to True after printing the message
|
||||
continue
|
||||
client_socket, addr = s.accept()
|
||||
client_thread = threading.Thread(target=handle_client, args=(client_socket, addr))
|
||||
client_thread.daemon = True
|
||||
client_thread.start()
|
Loading…
Reference in new issue