44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
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()
|