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