Skip to content
Snippets Groups Projects
Commit 5838732f authored by Luca Randazzo's avatar Luca Randazzo
Browse files

Upload New File

parent 8bf520fe
No related branches found
No related tags found
No related merge requests found
# Problem 1: Client will einem Chat beitreten und weiß nicht welchen Server er kontaktieren muss
# Problem 2: ein server will einem netzwerk beitreten
# for dynamic discovery Broadcast (UDP Only) to all members of a network is necessary
# 1. neuer server_A sendet Broadcast Nachricht an Broadcastadress (letzte IP-Adresse in einem Netzwerk oder berechnen über OnlineTool Vorlesungfolien) mit seiner eigenen ip-adresse
# -> Leader_Server müssen konstant listen auf die Broadcastadress
# -> Server_B updatet seine 'group View' (wenn man einen Leader hat nicht notwendig)
# -> Leader_Server sendet ip Adressen aller Server zurück
# 2. Server sammelt alle IP-adressen und speichert diese ab
# -> Jeder Server hat eine list 'group Vview mit den adressen aller Server' (wenn man einen Leader hat nicht notwendig)
from base64 import encode
import socket
import leaderServer
buffer_size = 4096
def broadcast_sender(broadcast_ip, broadcast_port, server_ip, server_uuid):
#create UDP socket
broadcast_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
print(leaderServer.leader)
if len(leaderServer.leader) == 0:
leaderServer.addLeader(server_uuid)
leaderServer.addServer(server_ip)
print(leaderServer.leader)
print(leaderServer.server_network)
else:
# send message
broadcast_socket.sendto(str(server_ip).encode(), (broadcast_ip, broadcast_port))
def broadcast_listener(ip_adress, port):
print(leaderServer.leader)
print(leaderServer.server_network)
#UDP socket
listen_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#set socket to broadcast and enable reusing adress
listen_socket.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST, 1)
listen_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1)
#bind socket adress and Port
listen_socket.bind((ip_adress, port))
print('listener up and run at {} : {}'.format(ip_adress, port))
data, address = listen_socket.recvfrom(buffer_size)
#hier jetzt async einbauen für ständige listen?
print("Broadcast recieved from Sender: ", data.decode())
return data.decode()
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