def send(self):
        if not self._receive_has_been_called:
            all_addrs = self._dest_addrs
        else:
            all_addrs = [a for (i, a) in list(self._id_to_addr.items())
                         if i in self._remaining_ids]
        if self._last_used_id is None:
            self._last_used_id = int(time.time()) & 0xffff
        for addr in all_addrs:
            self._last_used_id = (self._last_used_id + 1) & 0xffff
            self._id_to_addr[self._last_used_id] = addr
            self._send_ping(addr, payload=struct.pack("d", time.time()))