diff --git a/client.py b/client.py
index 13a5038a28aaa0042f3577c37e277667d78dab87..9d270931784f7b204451bdbecc138acb8f1b2b00 100644
--- a/client.py
+++ b/client.py
@@ -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))
diff --git a/server.py b/server.py
index 98424e132f08120991f02fbeefc38b7af0af5e64..2cf7d40d8c1dea0d3c99e8f89294b40d4ffb9214 100644
--- a/server.py
+++ b/server.py
@@ -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