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