diff --git a/server.py b/server.py index 5185f13e06ecfbb2d72d3f8c0991b9d90e5b737c..7eb49f674d71f8834273956d624e548542ef75e1 100644 --- a/server.py +++ b/server.py @@ -23,10 +23,6 @@ RING_PORT = 10001 MY_HOST = socket.gethostname() MY_IP = socket.gethostbyname(MY_HOST) -# bind to ring socket -ring_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) -ring_socket.bind((MY_IP, RING_PORT)) - class Server(): def __init__(self): @@ -78,6 +74,7 @@ class Server(): if newServer_address not in self.serverList: self.serverList.append(newServer_address) + self.basic_lcr() reply_message = MY_IP multicast_listen_sock.sendto(str.encode(reply_message), address) @@ -89,7 +86,7 @@ class Server(): time.sleep(1) self.print_group_view() # self.basic_lcr() - self.printwt(f'The current leader IP is: {self.leader_uuid}') + # self.printwt(f'The current leader IP is: {self.leader_uuid}') #this function enables the server to send a multicast to the server group and receive the answers of existing members @@ -149,7 +146,7 @@ class Server(): multicast_send_sock.close() self.isLeader = True self.leader_uuid = self.uuid # Hier wird die uuid-Adresse des Leaders zugewiesen - self.printwt(f'I am the only server in the system, so the leader IP is: {self.leader_uuid}') + # self.printwt(f'I am the only server in the system, so the leader IP is: {self.leader_uuid}') time.sleep(1) @@ -208,10 +205,16 @@ class Server(): self.clients.remove(client) def basic_lcr(self): + # bind to ring socket + ring_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + ring_socket.bind((MY_IP, RING_PORT)) print('++++++++++++++++++++++++++') print('New leader election starts') print('sending first leader election message to neighbour') + print('Servers') + print(self.serverList) + neighbour = get_neighbour(form_ring(self.serverList), MY_IP, 'left') neighbour_address = (neighbour, RING_PORT) first_message = { @@ -220,6 +223,9 @@ class Server(): } self.participant = True ring_socket.sendto(json.dumps(first_message).encode('utf-8'), neighbour_address) + + print('Neighbour') + print(neighbour) print('\nWaiting to receive election message...\n') data, address = ring_socket.recvfrom(1024) @@ -273,7 +279,11 @@ if __name__== '__main__': thread1 = threading.Thread(target = server.ListenForClientAndReply) thread1.start() - server.basic_lcr() + thread_election = threading.Thread(target = server.basic_lcr) + thread_election.start() + + + # server.basic_lcr() # Socket erstellen und binden server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)