From b3bc1394d6c1b9d0642798931e2e21703020dd0a Mon Sep 17 00:00:00 2001
From: Katharina <katharina.willig@outlook.com>
Date: Wed, 20 Nov 2024 22:55:21 +0100
Subject: [PATCH] add: entered the chat and ignores broadcast with own ip

---
 __pycache__/sync.cpython-313.pyc | Bin 0 -> 970 bytes
 kclient.py                       |  22 +++++++++++++++++++---
 kserver.py                       |   9 +++++++--
 sync.py                          |  15 +++++++++++++++
 4 files changed, 41 insertions(+), 5 deletions(-)
 create mode 100644 __pycache__/sync.cpython-313.pyc
 create mode 100644 sync.py

diff --git a/__pycache__/sync.cpython-313.pyc b/__pycache__/sync.cpython-313.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..39ab3f1aff8c2617a38fe17a399b3ae4772a1572
GIT binary patch
literal 970
zcmaJ=&yUhT6rS?4aiJ!fXoA^wvL+^&Z4VOmz>iH-#2>qIkicqaLTdYj3KTL^mcYq)
z_Ta_DgGUc~^Wf1xqGT~_s)tQHc_ZN;aHfC)as85M=e_rR?|p4%rqSp*#NdYZYNtMg
ze)3=e7JHapV6V5Rh>F5KBB<z#AtKa-xc?U~7xV>>M<KTSY)x+nTvI|7p7ro}nK#d+
zdI)Jrget*#g3U-WB?n$nH|N<EuCIh7RP_IUhJ+G<rJlkPo4Z|u=V*6j${Fe=|4t7}
z?tLX;&Cx$*tU9Wp8j1%CgM7)dfl$3}f&tiU;UbVDAaVihK@Ug+*Wh{AGQd*st%lvz
znkF@Y05&v=7aT=V22l%o*aExPCXEyx1aO<+L3+LU0cZx0Gkb!CXAIUc9&jT~k3Mtc
zO4M^!oeyz?9b#Ix8=8^gKKC*K9n2#zs%y;ie+n}$<!1t8w{j<?mKc|+4b84=YObw!
zTVUB#eWX$LSE{+&ch#IpZDKy_+F;;fpQT$=?U42h&~4TDTa)R$M*Ehoboy>YuY=yG
zYJ_NgN;cTU09*7Gd%Q%G5E8F`*coqUhuhiXaQ257b)@o0JUqFceH|Hz*I43B)Y(cp
zo4cQlubFYWJWQ9J)S)9i8HrC%!<XLgjAQaJCLf1oPrN@84^FmZF23T4-?g1h<)iT>
zGfw1(iM(_3o+I7=CO(*ik*G|W3l#SeZpriZ36Tij^Ly!vnO58AHeruQEaX>!^3B9A
Q2*P)CaT?kX9ts}+H+_KObN~PV

literal 0
HcmV?d00001

diff --git a/kclient.py b/kclient.py
index 1cbca27..9e537d6 100644
--- a/kclient.py
+++ b/kclient.py
@@ -4,36 +4,52 @@ import threading
 broadcast_ip = '255.255.255.255'#ip ggfs ändern
 broadcast_port = 55555
 
+#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}")
+                              
 # Erstelle den Client-Socket für 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
 
-nickname = input("Enter your nickname: ")
+#nickname = input("Enter your nickname: ")
 
 def receive():
     """Empfängt Nachrichten vom Server und anderen Clients."""
     while True:
         try:
-            data, _ = client_socket.recvfrom(4096)
+            data, address = client_socket.recvfrom(4096)
             decoded_message = data.decode()
 
             # Ignoriere Nachrichten mit Server-Kennung
             if decoded_message.startswith("["):
                 continue
+            #ignores broadcast messages with own ip
+            if address[0]==MY_IP:
+                continue
 
             print(decoded_message)
+
         except socket.error as e:
             print(f"An error occurred: {e}")
             break
 
 def write():
     """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:
         message = input("")
+
         if message.strip():
-            full_message = f"{nickname}: {message}".encode()
+            full_message = f"{nickname}: {message}".encode()#entered the chat?
+
             client_socket.sendto(full_message, (broadcast_ip, broadcast_port))
 
 # Starte den receive-Thread
diff --git a/kserver.py b/kserver.py
index 3f597a6..b3b5dee 100644
--- a/kserver.py
+++ b/kserver.py
@@ -17,7 +17,7 @@ server_socket.bind(('', broadcast_port))
 print(f"Server is running with ID {server_id} and broadcasting on port {broadcast_port}...")
 
 def broadcast(message):
-    """Sendet eine Nachricht an alle im Netzwerk mit Server-ID."""
+    """Sendet eine Nachricht an alle im Netzwerk mit Server-ID an Server."""
     full_message = f"[{server_id}] {message}".encode()
     server_socket.sendto(full_message, (broadcast_ip, broadcast_port))
 
@@ -32,10 +32,15 @@ def receive():
             if decoded_message.startswith(f"[{server_id}]"):
                 continue  # Ignoriere die Nachricht, wenn sie vom Server selbst stammt
 
+            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
+            # Broadcast die Nachricht an alle Clients außer dem Sender
+            #if server_id!=client_address:
             broadcast(decoded_message)
+            
 
         except socket.error as e:
             print(f"An error occurred: {e}")
diff --git a/sync.py b/sync.py
new file mode 100644
index 0000000..c3b6d25
--- /dev/null
+++ b/sync.py
@@ -0,0 +1,15 @@
+import leaderServer
+
+
+def check_arrays(received_server_network, received_leader):
+
+    #aktuellen zustand des servers prüfen:
+    if received_server_network != leaderServer.server_network:
+        print("Unterschiede im Server-Netzwerk gefunden. Aktualisiere das Netzwerk...")
+        leaderServer.server_network = received_server_network  # Update das Netzwerk
+        print(f"new network: {received_server_network} or {leaderServer.server_network}")
+    
+    if received_leader != leaderServer.leader:
+        print("Unterschiede im Leader gefunden. Aktualisiere den Leader...")
+        leaderServer.leader = received_leader  # Update den Leader
+        print(f"new network: {received_leader} or {leaderServer.leader}")
\ No newline at end of file
-- 
GitLab