From e092cdeeb0a1da7a79b1c93bc7244a93b182e958 Mon Sep 17 00:00:00 2001
From: Katharina <katharina.willig@outlook.com>
Date: Wed, 20 Nov 2024 23:18:42 +0100
Subject: [PATCH] add threads and comments

---
 kclient.py | 34 +++++++++++++++++++++-------------
 kserver.py | 33 +++++++++++++++++++++------------
 2 files changed, 42 insertions(+), 25 deletions(-)

diff --git a/kclient.py b/kclient.py
index 9e537d6..cd9f020 100644
--- a/kclient.py
+++ b/kclient.py
@@ -1,7 +1,7 @@
 import socket
 import threading
 
-broadcast_ip = '255.255.255.255'#ip ggfs ändern
+broadcast_ip = '255.255.255.255'#change ip??? #hard coded?
 broadcast_port = 55555
 
 #local host information
@@ -10,16 +10,16 @@ MY_HOST = socket.gethostname()
 MY_IP = socket.gethostbyname(MY_HOST)
 #print(f"host:{MY_HOST} and ip: {MY_IP}")
                               
-# Erstelle den Client-Socket für Broadcast
+# create client-socket for broadcast
 client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
 client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-client_socket.bind(('', broadcast_port))  # Lausche auf Broadcast-Port
+client_socket.bind(('', broadcast_port))  # listen on broadcast-port
 
 #nickname = input("Enter your nickname: ")
 
-def receive():
-    """Empfängt Nachrichten vom Server und anderen Clients."""
+def listen():
+    """receives messages from server and clients."""
     while True:
         try:
             data, address = client_socket.recvfrom(4096)
@@ -38,24 +38,32 @@ def receive():
             print(f"An error occurred: {e}")
             break
 
-def write():
+def sender():
     """Ermöglicht dem Benutzer, Nachrichten zu schreiben und zu senden."""
     nickname = input("Enter your nickname: ")
     just_nickname= f"{nickname} entered the chat".encode()
     client_socket.sendto(just_nickname, (broadcast_ip, broadcast_port))
 
     while True:
+        #allows the client to send any message
         message = input("")
 
+        #checks for whitemarks
         if message.strip():
-            full_message = f"{nickname}: {message}".encode()#entered the chat?
+            full_message = f"{nickname}: {message}".encode()
 
             client_socket.sendto(full_message, (broadcast_ip, broadcast_port))
 
-# Starte den receive-Thread
-receive_thread = threading.Thread(target=receive)
-receive_thread.daemon = True
-receive_thread.start()
+# starts listen-thread
+listen_thread = threading.Thread(target=listen)
+#Daemon Thread does not block the main thread from exiting and continues to run in the background
+listen_thread.daemon = True
+listen_thread.start()
+#print(listen_thread.is_alive())
 
-# Starte die write-Funktion im Hauptthread
-write()
+# starts sender-function in main thread
+#sender()
+sender_thread= threading.Thread(target=sender)
+#sender_thread.daemon = True
+sender_thread.start()
+#print(sender_thread.is_alive())
diff --git a/kserver.py b/kserver.py
index b3b5dee..b82846d 100644
--- a/kserver.py
+++ b/kserver.py
@@ -5,10 +5,10 @@ import uuid
 broadcast_ip = '255.255.255.255'
 broadcast_port = 55555
 
-# Erstelle eine eindeutige Server-ID
+# create unique server-ID
 server_id = str(uuid.uuid4())
 
-# Erstelle den Server-Socket für Broadcast
+# create server-socket for broadcast
 server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
 server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
@@ -16,38 +16,47 @@ server_socket.bind(('', broadcast_port))
 
 print(f"Server is running with ID {server_id} and broadcasting on port {broadcast_port}...")
 
+#broadcast function
 def broadcast(message):
-    """Sendet eine Nachricht an alle im Netzwerk mit Server-ID an Server."""
+    """sends messages to all server-IDs in the network"""
     full_message = f"[{server_id}] {message}".encode()
     server_socket.sendto(full_message, (broadcast_ip, broadcast_port))
 
-def receive():
-    """Empfängt Nachrichten von Clients und broadcastet sie weiter."""
+#listener function
+def listen():
+    """receives messages from clients and broadcast them."""
     while True:
         try:
             message, client_address = server_socket.recvfrom(4096)
             decoded_message = message.decode()
 
-            # Prüfe, ob die Nachricht vom Server selbst stammt
+            # checks wheter the message comes from the server itself
             if decoded_message.startswith(f"[{server_id}]"):
-                continue  # Ignoriere die Nachricht, wenn sie vom Server selbst stammt
-
+                continue  # if...ignores it
+            
+            #checks if the message containts the string "entered"
             if decoded_message.__contains__("entered"):
                 print(f"{client_address} entered the chat.")
 
             print(f"Received from {client_address}: {decoded_message}")
 
-            # Broadcast die Nachricht an alle Clients außer dem Sender
-            #if server_id!=client_address:
             broadcast(decoded_message)
             
-
+        #exceptions
         except socket.error as e:
             print(f"An error occurred: {e}")
             break
+
+        #does not work
         except KeyboardInterrupt:
             print("\nServer wird beendet...")
             break
 
 if __name__ == "__main__":
-    receive()
+    #main thread
+    listen_thread= threading.Thread(target=listen)
+    #listen_thread.daemon = True
+    listen_thread.start()
+    #print(listen_thread.is_alive())
+    #listen()
+
-- 
GitLab