Wenn du etwas ernsthaftes, nicht-Echtzeit-kritisches mit größeren Datenmengen (Nachricht >> 1 Datagram) implementieren möchtest, solltest du nicht nur wegen des Hole-Punching auf
TCP verzichten. Insbesondere, wenn das ganze über das Internet gehen soll.
TCP würde jahrzehntelang auf die Übertragung von Byte-Strömen durch das Internet optimiert.
Wenn du es dir um den Lerneffekt geht: Viel Spaß dabei.
Hier findest du mit dem XDT-Protokol ein Beispiel, wie man ein paar grundlegende Dinge angehen kann.