39 lines
873 B
Python
39 lines
873 B
Python
from datetime import datetime, timezone
|
|
import socket
|
|
|
|
def utc_time():
|
|
return datetime.now(timezone.utc)
|
|
|
|
|
|
INTRODUCER_IP = "172.22.156.3"
|
|
IP = socket.gethostbyname(socket.gethostname())
|
|
SERVER_PORT = 6767
|
|
INTRODUCER_FLAG = (INTRODUCER_IP == IP)
|
|
|
|
#check if this VM is the introducer and add it self
|
|
members_list = {}
|
|
if INTRODUCER_FLAG:
|
|
members_list[(IP, SERVER_PORT)] = {
|
|
"heart_beat": 1,
|
|
"last_seen": utc_time()
|
|
}
|
|
|
|
|
|
#start UDP socket
|
|
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
server.bind((IP, SERVER_PORT))
|
|
|
|
if not INTRODUCER_FLAG:
|
|
server.sendto(b"JOIN", (INTRODUCER_IP, SERVER_PORT))
|
|
|
|
while True:
|
|
data, addr = server.recvfrom(4096)
|
|
if data == b"JOIN":
|
|
members_list[addr] = {
|
|
"heart_beat": 1,
|
|
"last_seen": utc_time()
|
|
}
|
|
print(members_list[addr])
|
|
|
|
|
|
#increment heart beat |