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