diff --git a/2024-11-26_Forming_a_Ring_ohne_Update_Ring-Threading_.py b/2024-11-26_Forming_a_Ring_ohne_Update_Ring-Threading_.py
new file mode 100644
index 0000000000000000000000000000000000000000..129b5aded0d5a47788432be94362941eeddb26cc
--- /dev/null
+++ b/2024-11-26_Forming_a_Ring_ohne_Update_Ring-Threading_.py
@@ -0,0 +1,162 @@
+#Ring testebn
+#Forming a Ring
+
+import time
+import threading
+from uuid import uuid4
+import socket
+import uuid
+import json
+#Neu
+leader = False
+#Definition Atribute
+global members
+members = [] #List for members in the ring
+broadcast_ip = "255.255.255.255"  #Broadcast-adress in the Network
+port = 12348  #Port that is used for the discovery of new server participants
+server_ip = "0.0.0.0" #IP that enables the server to receive all messages that are passed to the port
+my_ip = str(uuid.uuid4()) #Creating a unique ip Adress using uuid4
+ringport = 12343
+ 
+############################################################################################## 
+###############Threadig einfügen##############################################################
+#Loo until Leader= Falsch # Der neue Leader übernimmt diese Aufgabe
+
+########################In Bearbeitung#################- Nur hier wird die Globale Neughbour Angesprochen und Geupdated - Achtung Falsch muss um den Eing geleitet werden
+def sende_update_ring():
+    print("Ich Update den Ring")
+    Nachricht = json.dumps(members).encode() # Nachricht beinhaltet die Liste mit den Members
+    # Erstellen eines UDP-Sockets
+    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    # Setze den Socket in den Broadcast-Modus
+    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+    # Sende die Nachricht an die Broadcast-Adresse
+    sock.sendto(Nachricht, (broadcast_ip, ringport))
+   
+#Muss dauerhaft erfolgen
+def lausche_update_Ring():
+    global members
+    # Erstellen eines UDP-Sockets
+    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    # Setze den Socket in den Broadcast-Modus
+    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+    # Sende die Nachricht an die Broadcast-Adresse
+    sock.bind(("0.0.0.0", ringport))
+    while True:
+        data, addr = sock.recvfrom(1024)  # Antwort empfangen
+        try:
+            members = json.loads(data.decode())
+            print(f"Ring Update erhalten: {members}")
+            #nachricht_update_ring()
+        except json.JSONDecodeError:
+            print("Fehler beim Decodieren der JSON-Daten.")
+                
+    
+###########################################################################
+###########################################################################
+
+#Function of Leader. Server is listeng to the Port to greet new servers and Update Ring Topology
+def new_server_in_ring():
+    global members
+    # Erstellen eines UDP-Sockets
+    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    # Setze den Socket in den Broadcast-Modus
+    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+    # Binde den Socket an die Adresse und den Port
+    sock.bind(("0.0.0.0", port))
+    print("Server läuft und wartet auf Broadcast-Nachrichten von neuen Servern.") 
+    while True:
+        #Lauscht ob es ene Nachricht von anderen servern erhält
+        data, addr = sock.recvfrom(1024)  # Puffergröße 1024 Bytes
+        print(f"Nachricht empfangen von {addr}: {data.decode()}")
+        #response = b"Antwort vom Server: Nachricht erhalten!"
+        # Sende die Antwort zurück an den neuen Server
+        #sock.sendto(response, addr)
+        #print(f"Antwort gesendet an {addr}")
+        new_server_ip, new_server_port = addr
+        new_ID = data.decode()
+        new_ID = new_ID.split(": ")[1]
+        #Prüfen ob die ID bereis vorhanden ist und Server nur kurz die Verbindung verloren hat. Kann eigemtlich nich eintreten, da ID immer neu generiert wird
+        if new_ID in members:
+            #msg = f"Welcome Back. Aktueller Ring: {json.dumps(members)}".encode()
+            Nachricht = json.dumps(members).encode()
+        else:
+            members.append(new_ID)
+            Nachricht = json.dumps(members).encode()
+            #msg = f"Updated Ring: {json.dumps(members)}".encode()
+            #Alle anderen im Ring auch noch benachrichtigen.... mit einer Funktion Update Ring()
+        #Neuneu neu
+        #sock.sendto(msg, addr)
+
+        ###einfügern
+        #message = json.dumps(members)
+        ###Testen ob es beim zweiten  mal auch Funktioniert
+        print(f"Members des Rings sind: {members}")
+        sock.sendto(Nachricht, addr)
+        #Naxchricht noch an den anderen server senden!
+
+        #######################################################
+        #######################################################
+        #sende_update_ring()
+        
+        
+        #Wie kann ich MSG versenden ohne das die zerteilung der nachricht Falsch ist?
+
+#Server tritt bei und macht sich für andere Server bemerkbar
+def server_enters():
+    global members
+    msg = f"Ich bin neu: {my_ip}".encode() #Greeting message of the server entering the chat
+    # Erstellen eines UDP-Sockets
+    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+    # Setze den Socket in den Broadcast-Modus
+    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+    # Sende die Nachricht an die Broadcast-Adresse
+    sock.sendto(msg, (broadcast_ip, port))
+    # Warte etwas auf eine Antwort
+    sock.settimeout(2)
+    try:
+        data, addr = sock.recvfrom(1024)  # Antwort empfangen
+        print(f"Antwort von {addr}")
+        #Liste der Members wird dem Neuzugang gesendet, Es wird geprüft, ob die json Datei ausgelesen werden kann. Json wird genutzt um Liste Vollständig zu übergeben
+        try:
+            members = json.loads(data.decode())
+            print(f"Der neue Ring ist: {members}")
+            #nachricht_update_ring()
+        except json.JSONDecodeError:
+            print("Fehler beim Decodieren der JSON-Daten.")
+
+
+
+        #Übergabe der Ring Teilnehmer durch den Server an Alle anderen Teilnehnmer!!
+    except socket.timeout:
+        #If no answer is received the server sets itself as leader
+        print(f"Keine Antwort erhalten. Ich bin jetzt der Leader. Meine ID: {my_ip}")
+        #Leader fügt sich selbst als Teilnehmer in den Ring ein
+       
+        members.append(my_ip)
+        #Leader ruft die Funktion auf, um andere beiretenden Servern zu lauschen
+        #New New
+        #Global Leader
+        #Leader = True
+        new_server_in_ring()
+        
+#Server tritt in den Ring ein/formt den Ring
+
+
+if __name__ == "__main__":
+    # Thread 1 und 2 erstellen
+    thread1 = f"Thread1-{my_ip}"
+    #thread2 = f"Thread2-{my_ip}"
+    #print(thread1)
+    #print(thread2)
+
+    thread1 = threading.Thread(target=server_enters)
+    thread2 = threading.Thread(target=lausche_update_Ring)
+
+    # Starten der Threads
+    thread1.start()
+    #thread2.start()
+
+        
+# Schließe den Socket an welchem Punkt??
+#sock.close()