import socket import threading # Server-Informationen HOST = '127.0.0.1' PORT = 12345 # Erstelle den Server-Socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((HOST, PORT)) nicks = {} # Liste für die Verfolgung der Clients clients = [] def handle_client(conn, addr): """ Funktion für die Behandlung eines einzelnen Clients """ # Füge den Client zur Liste hinzu clients.append(conn) #Nick_given = False #while Nick_given == True: # try: # # Empfange den nickname des Clients # msg = conn.recv(1024).decode('utf-8') # if not msg: # break # print(clients) # print(f"Nick von {addr}: {msg}") # global nicks # nicks[addr] = msg # Nick_given = True # except: # # Entferne den Client aus der Liste und schließe die Verbindung # print("Client getrennt:", addr) # clients.remove(conn) # conn.close() # break print("Neuer Client verbunden:", addr)#,nicks[addr]) while True: try: # Empfange die Nachricht des Clients msg = conn.recv(1024).decode('utf-8') if not msg: break print(clients) print(f"Nachricht von {addr}: {msg}") # Sende die Nachricht an alle anderen Clients for client in clients: if client != conn: client.sendall(msg.encode('utf-8')) except: # Entferne den Client aus der Liste und schließe die Verbindung print("Client getrennt:", addr) clients.remove(conn) conn.close() break def start_server(): """ Funktion für das Starten des Servers """ server.listen() print(f'Server läuft auf {HOST}:{PORT}') while True: # Warte auf eingehende Verbindungen conn, addr = server.accept() # Starte einen neuen Thread für jeden Client threading.Thread(target=handle_client, args=(conn, addr)).start() if __name__ == '__main__': try: start_server() except KeyboardInterrupt: print("Server wird heruntergefahren.") server.close()