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