From bffd5996e76a1a93bc5de13b3df20b0281a2bf17 Mon Sep 17 00:00:00 2001 From: Santiago Date: Thu, 15 Feb 2024 19:17:17 +0100 Subject: [PATCH] first commit --- cliente.py | 33 +++++++++++++++++++++++++++++ server.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 cliente.py create mode 100644 server.py diff --git a/cliente.py b/cliente.py new file mode 100644 index 0000000..7913e37 --- /dev/null +++ b/cliente.py @@ -0,0 +1,33 @@ +import socket +import threading + +# Configuración del cliente +HOST = 'localhost' +PORT = 5555 + +# Crear un socket del cliente +client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +client_socket.connect((HOST, PORT)) + +def receive_messages(): + """Recibe mensajes del servidor y muestra en pantalla.""" + while True: + try: + message = client_socket.recv(1024).decode('utf-8') + print(message) + except: + # En caso de error, salir del bucle + break + +def send_messages(): + """Envía mensajes al servidor.""" + while True: + message = input() + client_socket.send(message.encode('utf-8')) + +# Iniciar hilos para recibir y enviar mensajes +receive_thread = threading.Thread(target=receive_messages) +receive_thread.start() + +send_thread = threading.Thread(target=send_messages) +send_thread.start() \ No newline at end of file diff --git a/server.py b/server.py new file mode 100644 index 0000000..1ca3d0d --- /dev/null +++ b/server.py @@ -0,0 +1,62 @@ +import socket +import threading + +# Configuración del servidor +HOST = '' +PORT = 5555 + +# Crear un socket del servidor +server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +server_socket.bind((HOST, PORT)) +server_socket.listen() + +# Lista para almacenar conexiones de clientes +clients = [] + +def broadcast(message, client_socket): + """Envía el mensaje a todos los clientes conectados.""" + for client in clients: + # Excepto al cliente que envió el mensaje + if client != client_socket: + try: + client.send(message) + except: + # Eliminar clientes que no responden + clients.remove(client) + +def handle_client(client_socket): + """Maneja la conexión de un cliente.""" + while True: + try: + # Recibir mensajes del cliente + message = client_socket.recv(1024) + if not message: + break + + # Imprimir el mensaje en el servidor + print(f"Mensaje de {client_socket.getpeername()}: {message.decode('utf-8')}") + # Broadcast del mensaje a todos los clientes + broadcast(message, client_socket) + + except: + # Eliminar clientes que causan problemas + clients.remove(client_socket) + break + +def main(): + print(f"Servidor en escucha en {HOST}:{PORT}") + + while True: + # Aceptar nuevas conexiones + client_socket, address = server_socket.accept() + print(f"Conexión aceptada desde {address}") + + # Agregar el nuevo cliente a la lista + clients.append(client_socket) + + # Iniciar un hilo para manejar al cliente + thread = threading.Thread(target=handle_client, args=(client_socket,)) + thread.start() + +if __name__ == "__main__": + main() \ No newline at end of file