From 27791319b5de56d939a1336c79e05fb947b7c31b Mon Sep 17 00:00:00 2001 From: Robin Leber <robin.leber@student.reutlingen-university.de> Date: Sun, 7 Jan 2024 11:33:33 +0000 Subject: [PATCH] Add server file --- server.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 server.py diff --git a/server.py b/server.py new file mode 100644 index 0000000..bf4da54 --- /dev/null +++ b/server.py @@ -0,0 +1,53 @@ +import socket +import threading + +def handle_client(client_socket, client_address): + while True: + try: + # Empfange Nachricht vom Client + data = client_socket.recv(1024) + if not data: + break + + # Sende die empfangene Nachricht an alle anderen Clients + broadcast(data, client_socket, client_address) + except: + break + + # Client-Socket schließen + client_socket.close() + +def broadcast(message, sender_socket, sender_address): + for client in clients: + try: + # Sende die Nachricht an alle Clients, außer an den Absender + if client != sender_socket: + client.send(f"{sender_address}: {message}".encode('utf-8')) + except: + # Entferne defekte Verbindungen + clients.remove(client) + +# Server-Konfiguration +host = '127.0.0.1' +port = 5555 + +# Socket erstellen und binden +server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +server_socket.bind((host, port)) +server_socket.listen(5) + +print(f'Server lauscht auf {host}:{port}') + +# Liste für die verbundenen Clients +clients = [] + +while True: + # Warten auf eine Verbindung + client_socket, client_address = server_socket.accept() + + # Neuen Thread für jeden verbundenen Client erstellen + client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address)) + client_thread.start() + + # Client-Socket zur Liste hinzufügen + clients.append(client_socket) -- GitLab