import socket
import threading
HOST = "0.0.0.0"
PORT = 5000
clients = {}
def handle_client(conn,addr):
nickname = conn.recv(1024).decode()
print(f"[+] Подключился {nickname}")
clients[conn] = nickname
try:
while True:
data = conn.recv(1024)
if not data:
break
message = data.decode()
full_message = f"{nickname}: {message}"
print(full_message)
for client in clients:
if client != conn:
client.sendall(full_message.encode())
except ConnectionResetError:
pass
finally:
clients.pop(conn, None)
conn.close()
print(f"[-] Отключился {nickname}")
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((HOST,PORT))
server.listen()
print(f"Сервер запущен на порту {PORT}")
while True:
conn, addr = server.accept()
threading.Thread(
target=handle_client,
args=(conn,addr),
daemon=True).start()