Skip to content
Snippets Groups Projects
Commit b3bc1394 authored by Katharina's avatar Katharina
Browse files

add: entered the chat and ignores broadcast with own ip

parent 5bff1369
No related branches found
No related tags found
No related merge requests found
File added
......@@ -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
......
......@@ -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}")
......
sync.py 0 → 100644
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment