Skip to content
Snippets Groups Projects
Commit f9128b69 authored by Michael Zanger's avatar Michael Zanger
Browse files

mac stable 14 jan

parent 23d4e9b6
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,7 @@ if __name__ == '__main__':
clients_cache = dict()
BROADCAST_PORT = 49154
#BROADCAST_PORT_LISTEN = 49154
print("I'm alive")
MSG = bytes("HI MAIN SERVER", 'utf-8')
......@@ -31,15 +32,24 @@ if __name__ == '__main__':
broadcast_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
broadcast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
broadcast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Create a separate socket for receiving broadcast messages
# receive_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# receive_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# receive_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
if os == "macOS":
broadcast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
broadcast_socket.sendto(MSG, (broadcast_address, BROADCAST_PORT))
# receive_socket.bind((broadcast_address, BROADCAST_PORT_LISTEN))
else:
broadcast_socket.sendto(MSG, (broadcast_address, BROADCAST_PORT))
print("Successfully sent message")
message, server = broadcast_socket.recvfrom(1024)
print("after receive")
print("test")
match = re.search(r'\b([A-Za-z])\b$', message.decode('utf-8'))
server_id = match.group(1)
......
......@@ -142,9 +142,9 @@ class Server(multiprocessing.Process):
def send_heartbeat(self):
while True:
time.sleep(10)
for server_id in self.local_servers_cache.items():
for server_id, server_address in self.local_servers_cache.items():
if server_id != self.server_id:
acknowledgment_received = self.send_heartbeat_to_server(self.server_address, server_heartbeat_tcp_listener_port)
acknowledgment_received = self.send_heartbeat_to_server(server_address[0], server_heartbeat_tcp_listener_port)
#acknowledgment_received = "YES"
if acknowledgment_received:
print(f"Heartbeat acknowledgment received from {server_id}")
......@@ -242,25 +242,41 @@ class Server(multiprocessing.Process):
self.local_servers_cache[new_server_id] = addr
print(self.server_id+": "+"Received server register broadcast message:", message)
self.register_server(addr, new_server_id)
#self.register_server(addr, new_server_id)
register_server_thread = threading.Thread(target=self.register_server(addr, new_server_id))
register_server_thread.start()
update_cache_thread = threading.Thread(target=self.updateCacheList)
if update_cache_thread.is_alive:
update_cache_thread.run()
else:
update_cache_thread.start()
# def register_server(self, addr, server_id):
# BROADCAST_ADDRESS = self.get_broadcast_address()
# message = 'Hi ' + addr[0] + ' this is your chat-group ID: ' + str(server_id)
# server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# if self.os == "macOS":
# server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
# server_socket.connect((BROADCAST_ADDRESS, 49154))
# print(self.server_port)
# else:
# server_socket.connect(('<broadcast>', self.server_port))
# server_socket.sendto(str.encode(message), addr)
# server_socket.close()
def register_server(self, addr, server_id):
BROADCAST_ADDRESS = self.get_broadcast_address()
message = 'Hi ' + addr[0] + ' this is your chat-group ID: ' + str(server_id)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
if self.os == "macOS":
server_socket.connect((BROADCAST_ADDRESS, self.server_port))
else:
server_socket.connect((BROADCAST_ADDRESS, self.server_port))
#server_socket.connect((self.server_address, self.server_port))
server_socket.connect((addr[0], addr[1]))
server_socket.sendto(str.encode(message), addr)
print(server_socket)
server_socket.close()
def listen_for_clients(self):
......@@ -382,8 +398,8 @@ class Server(multiprocessing.Process):
broadcast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
if self.os == "macOS":
broadcast_socket.sendto(MSG, (BROADCAST_ADDRESS, PORT))
broadcast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
broadcast_socket.sendto(MSG, (BROADCAST_ADDRESS, PORT))
else:
broadcast_socket.sendto(MSG, (BROADCAST_ADDRESS, PORT))
broadcast_socket.close()
......@@ -403,6 +419,7 @@ class Server(multiprocessing.Process):
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if self.os == "macOS":
print("listening for cache updates")
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
listen_socket.bind((BROADCAST_ADDRESS, BROADCAST_PORT))
else:
......
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