diff --git a/server.py b/server.py
index f718133f0e9c72914e4f39932cf452b92cf8e062..083fe558dcd803570606c02b91bb5a75490568db 100644
--- a/server.py
+++ b/server.py
@@ -305,15 +305,20 @@ class Server():
             time.sleep(self.heartbeat_interval)
 
     def heartbeat_subscriber(self, multicast_socket):
+
+        multicast_socket.settimeout(3)
+
         while True:
-            data, address = multicast_socket.recvfrom(1024)
-            if data:
-                self.leader_heartbeat_last_received = time.time()
-                sender_ip = address[0]
-                if sender_ip != MY_IP:
-                    print(f"Received heartbeat from {sender_ip}: {data.decode()}")
+            try:
+                data, address = multicast_socket.recvfrom(1024)
+                if data:
+                    self.leader_heartbeat_last_received = time.time()
+                    sender_ip = address[0]
+                    if sender_ip != MY_IP:
+                        print(f"Received heartbeat from {sender_ip}: {data.decode()}")
 
-            else:
+            # Wenn kein Heartbeat empfangen wurde
+            except socket.timeout:
                 time_since_last_heartbeat = time.time() - self.leader_heartbeat_last_received
                 if time_since_last_heartbeat > self.heartbeat_interval:
                     self.missed_heartbeats += 1
@@ -328,7 +333,7 @@ class Server():
                         self.missed_heartbeats = 0
                         # Code to initiate a new voting process to elect a new leader
                         # This could involve calling a function from voting.py or similar logic
-                time.sleep(self.heartbeat_interval)            
+            time.sleep(self.heartbeat_interval)            
 
 
 # starting all simultaneously working procedures