diff --git a/2024-12-22_Server_V4.py b/2024-12-22_Server_V4.py
index 1b912dcf4d1a99dbaa9a7bc974d70565ffa7ede2..bb3a7a0fb38ecc5e06ae3f91a92bb6a0a396c0fb 100644
--- a/2024-12-22_Server_V4.py
+++ b/2024-12-22_Server_V4.py
@@ -348,7 +348,7 @@ def listen_client():
             hold_back_queue.append((message_id, decoded_message)) # Add the message to the hold-back queue
             process_hold_back_queue() # Process messages in the hold-back queue
         except socket.error as e: # Handle socket errors
-            print(f"An error occurred: {e}")
+            print(f"An error occurred while listening: {e}")
             break
         except KeyboardInterrupt: # Handle server shutdown via keyboard interrupt ????? Funktioniert das??
             print("\nShutting down server...")
diff --git a/2025-01-01_Client_V4.py b/2025-01-01_Client_V4.py
index f9f45d9c1368f371fedf0cc4d2da8c25dbd8ca0f..6ee994a2e11a7804071a1252939dc4dc71d05c98 100644
--- a/2025-01-01_Client_V4.py
+++ b/2025-01-01_Client_V4.py
@@ -2,6 +2,7 @@ import socket
 import threading
 import time
 import uuid
+import sys
 
 broadcast_ip = '255.255.255.255'#change ip??? #hard coded?
 broadcast_port = 55555
@@ -57,8 +58,8 @@ def listen_server():
             #print("this decoded msg", decoded_message) #debug
 
         except socket.error as e:
-            print(f"An error occurred: {e}")
-            break
+            print(f"An error occurred while listening: {e}")
+            continue
 
 
 def sender():
@@ -70,18 +71,33 @@ def sender():
     #client_socket.sendto(just_nickname, (broadcast_ip, broadcast_port))
     client_socket.sendto(just_nickname, (broadcast_ip, broadcast_port))
     #print("is it leader adresse here", leader_address)
-    while True:
+    try: 
+        while True:
         
         #allows the client to send any message
-        message = input("")
+            message = input("")
         #print("send message to", broadcast_port)
         #checks for whitemarks
-        if message.strip():
-            message_id = str(uuid.uuid4())
-            full_message = f"{message_id}: {nickname}: {message}".encode()
-            client_socket.sendto(full_message, (broadcast_ip, broadcast_port))
+            if message.strip():
+                message_id = str(uuid.uuid4())
+                full_message = f"{message_id}: {nickname}: {message}".encode()
+                client_socket.sendto(full_message, (broadcast_ip, broadcast_port))
             #print("message sended to", broadcast_port)
 
+    except KeyboardInterrupt:
+        # Handle when the user presses Ctrl+C
+        print(f"\n{nickname} left the chat.")
+
+         # Notify others that this client left the chat
+        message_id = str(uuid.uuid4())  # New message ID
+        leave_message = f"{nickname} left the chat".encode()
+        client_socket.sendto(leave_message, (broadcast_ip, broadcast_port))
+        time.sleep(2)
+        # Gracefully close the socket
+        client_socket.close()
+        sys.exit()  # Exit the program
+        
+
 ###############main#################################
 if __name__ == "__main__":
     # Start listener thread