Skip to content
Snippets Groups Projects
Commit 41501ddb authored by Alexander Schulz's avatar Alexander Schulz
Browse files

group chat message

parent f7499637
No related branches found
No related tags found
No related merge requests found
......@@ -80,15 +80,29 @@ class Client(multiprocessing.Process):
client_socket.sendall(bytes(message, 'utf-8'))
data = client_socket.recv(1024)
print(f"Received response from server: {data.decode('utf-8')}")
#data = client_socket.recv(1024)
#print(f"Received response from server: {data.decode('utf-8')}")
client_socket.close()
def receive_messages(self):
print("Listening for groupchat multicast messages")
client_receive_message_multicast_port
PORT = 51000
client_receive_message_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_receive_message_socket.bind((self.client_address, PORT))
client_receive_message_socket.listen()
print("Listening for groupchat messages")
while True:
connection, addr = client_receive_message_socket.accept()
#print(addr)
#print(f"Connection established with {addr}")
message = connection.recv(1024)
print(f"GC message: {message.decode('utf-8')}")
#multicast_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
#multicast_socket.bind(('0.0.0.0', client_receive_message_multicast_port))
......
......@@ -493,13 +493,12 @@ class Server(multiprocessing.Process):
message = connection.recv(1024)
print(f"Received message from client: {message.decode('utf-8')}")
response = "Hello, client! I received your message."
connection.sendall(bytes(response, 'utf-8'))
#response = "Hello, client! I received your message."
#connection.sendall(bytes(response, 'utf-8'))
connection.close()
if message:
self.distribute_chat_message(message, addr)
#print(addr[0])
def distribute_chat_message(self, message, addr):
group = self.find_group_of_client(addr)
......@@ -508,27 +507,25 @@ class Server(multiprocessing.Process):
for key in self.local_clients_cache:
if group in key:
receiver_list.append(self.local_clients_cache[key][0])
print("Receiver list", receiver_list)
if addr[0] != self.local_clients_cache[key][0]:
receiver_list.append(self.local_clients_cache[key][0])
print("Receiver list", receiver_list)
distribute_chat_thread = threading.Thread(target=self.multicast_chat_message(message, receiver_list))
distribute_chat_thread = threading.Thread(target=self.send_chat_message_to_clients(message, receiver_list))
distribute_chat_thread.start()
def send_chat_message_to_clients(self, message, receiver_list):
#print(group)
#print(message.decode('utf-8'))
PORT = 51000
def multicast_chat_message(self, message, receiver_list):
for client in receiver_list:
multicast_address = (client, client_forward_message_multicast_port)
multicast_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
multicast_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
multicast_socket.sendto(message, multicast_address)
print("multicast message sent")
multicast_socket.close()
try:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.connect((client, PORT))
server_socket.sendall(message)
server_socket.close()
except (ConnectionRefusedError, TimeoutError):
print(f'Unable to send to {client}')
def start_leader_election(self):
#Reset last heartbeat timestamp
......
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