From 83a3343e94c39cc0a55a021c2fa89301511d1c97 Mon Sep 17 00:00:00 2001 From: Michelle Fahrner <michelle.fahrner@student.reutlingen-university.de> Date: Sun, 22 Dec 2024 20:00:58 +0000 Subject: [PATCH] Upload New File --- 2024-12-22_Client_V4.py | 79 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 2024-12-22_Client_V4.py diff --git a/2024-12-22_Client_V4.py b/2024-12-22_Client_V4.py new file mode 100644 index 0000000..979abc7 --- /dev/null +++ b/2024-12-22_Client_V4.py @@ -0,0 +1,79 @@ +import socket +import threading +import time +import uuid + +broadcast_ip = '255.255.255.255'#change ip??? #hard coded? +broadcast_port = 55555 +broadcast_port2 = 33333 + +#local host information +MY_HOST = socket.gethostname() +#socket.gethostbyname(socket.gethostname()) #getip +MY_IP = socket.gethostbyname(MY_HOST) +#print(f"host:{MY_HOST} and ip: {MY_IP}") + +# 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)) # listen on broadcast #socket is bind to ALL available IP addresses + +listener_ready = threading.Event() + +#listen for server? +def listen_server(): + client_socket2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + client_socket2.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + client_socket2.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + client_socket2.bind(('', broadcast_port2)) # listen on broadcast #socket is bind to ALL available IP addresses + """receives messages from server.""" + #listener_ready.set() #makes sure that listener is ready + while True: + try: + data, address = client_socket2.recvfrom(4096) + decoded_message = data.decode() + #print(f"Received {data.decode()} from {address}") #debug + #ignores broadcast messages with own ip #################please enable it after testing!!!!!!!!!!!!!!!!!!!S + + #does not work + if address[0]==MY_IP: + continue + + #print("this decoded msg", decoded_message) #debug + + except socket.error as e: + print(f"An error occurred: {e}") + break + + +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)) + client_socket.sendto(just_nickname, (broadcast_ip, broadcast_port)) + #print("is it leader adresse here", leader_address) + while True: + message_id = str(uuid.uuid4()) + #allows the client to send any message + message = input("") + #print("send message to", broadcast_port) + #checks for whitemarks + if message.strip(): + + full_message = f"{message_id}: {nickname}: {message}".encode() + client_socket.sendto(full_message, (broadcast_ip, broadcast_port)) + #print("message sended to", broadcast_port) + +###############main################################# +if __name__ == "__main__": + # Start listener thread + listen_thread = threading.Thread(target=listen_server) + listen_thread.daemon = True + listen_thread.start() + #listener_ready.wait() + + sender_thread = threading.Thread(target=sender) + sender_thread.start() + -- GitLab