diff --git a/server.py b/server.py
index 9bf30029c7e4b10c57122b238166bf274d195721..4b1fa84c775c1d70c616c35131463e491cb1e01f 100644
--- a/server.py
+++ b/server.py
@@ -284,39 +284,40 @@ class Server():
         self.missed_heartbeats_limit = 5
         self.missed_heartbeats = 0
 
-        # multicast_group = (MULTICAST_GROUP_IP, HEARTBEAT_PORT)
-        heartbeat_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-
-         # Set the time-to-live for messages to 1 so they do not go past the local network segment.
-        # heartbeat_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 1)
-        heartbeat_socket.bind(('', HEARTBEAT_PORT))
-
+      
+         # Erstelle und binde den Multicast-Socket für Heartbeats
+        multicast_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+        multicast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+        multicast_socket.bind((MY_IP, HEARTBEAT_PORT))
         multicast_group = socket.inet_aton(MULTICAST_GROUP_IP)
-        mreg = struct.pack('4sL', multicast_group, socket.INADDR_ANY)
-        heartbeat_socket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreg)
+        mreq = struct.pack('4sL', multicast_group, socket.INADDR_ANY)
+        multicast_socket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
 
-        threading.Thread(target=self.heartbeat_subscriber, args=(heartbeat_socket, multicast_group)).start()
-        threading.Thread(target=self.heartbeat_publisher, args=(heartbeat_socket, multicast_group)).start()
+        # Starte Heartbeat-Sender- und Empfänger-Threads
+        threading.Thread(target=self.heartbeat_publisher, args=(multicast_socket,)).start()
+        threading.Thread(target=self.heartbeat_subscriber, args=(multicast_socket,)).start()
+        
 
-    def heartbeat_publisher(self, heartbeat_socket, multicast_group):
+    def heartbeat_publisher(self, multicast_socket):
         while True:
             if self.is_leader:
                 print('\n I am Leader, sending heartbeat\n')
-                # Code to sends a heartbeat message
-                msg = '#'
-                heartbeat_socket.sendto(msg.encode(), (MULTICAST_GROUP_IP, HEARTBEAT_PORT))
-                time.sleep(self.heartbeat_interval)
+                heartbeat_message = "#"
+                multicast_socket.sendto(heartbeat_message.encode(), (MULTICAST_GROUP_IP, HEARTBEAT_PORT))
+            time.sleep(self.heartbeat_interval)
 
-    def heartbeat_subscriber(self, heartbeat_socket, multicast_group):
+    def heartbeat_subscriber(self, multicast_socket):
         while True:
-            if not self.is_leader:
-                print('\nWaiting to receive heartbeat...\n')
-                data, address = heartbeat_socket.recvfrom(1024)
-                if data:
-                    print(data.decode())
-                    heartbeat_socket.sendto('#'.encode(), address)
+            data, address = multicast_socket.recvfrom(1024)
+            if data:
+                sender_ip = address[0]
+                if sender_ip != MY_IP:
+                    print(f"Received heartbeat from {address}: {data.decode()}")
+                    # Hier kannst du die Logik hinzufügen, um den Status des Heartbeats zu verarbeiten
+            time.sleep(1)
 
 
+    
 
 
                     # time_since_last_heartbeat = time.time() - self.leader_heartbeat_last_received