import socket import threading # Configuración del servidor HOST = '0.0.0.0' PORT = 3333 clients = [] def broadcast(message, client_socket): for client in clients: if client != client_socket: try: client.send(message) except: clients.remove(client) def handle_client(client_socket, client_address): print(f"[NUEVO CLIENTE] {client_address} conectado.") while True: try: message = client_socket.recv(1024) if not message: break print(f"[{client_address}] {message.decode('utf-8')}") broadcast(message, client_socket) except: print(f"[DESCONECTADO] {client_address} se ha desconectado.") clients.remove(client_socket) client_socket.close() break def start_server(): server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((HOST, PORT)) server.listen(5) print(f"[INICIO] Servidor escuchando en {HOST}:{PORT}") while True: client_socket, client_address = server.accept() clients.append(client_socket) print(f"[CONECTADO] Nueva conexión desde {client_address}") threading.Thread(target=handle_client, args=(client_socket, client_address)).start()