Ein paar Dinge sind mir jedoch aufgefallen: (Ist meine Meinung, die auch falsch sein kann)
1. Abgesehen davon, dass der Thread nur einmal verwendet wird, sollte man Variablen (standardmäßig ) im Thread nicht "Protected" sondern besser "Threaded" machen, spart einem spätere Fehlersuche, wenn mal mehr Threads einer Sorte laufen.
2. Um ein Verwenden der gelesenen Daten hast Du dich böse gesagt mit einem ";TODO" gedrückt. Normalerweise wird die Verarbeitung (auch) außerhalb des/der Threads ablaufen (z.B. weil GUI Aufrufe evtl. problematisch sein könnten). Den Zugriff hat man ja über die Struktur ClientData auch im Hauptprogramm. Dann muss ("sollte" im Sinne der Hilfe zu ReceiveNetworkData () ) man sich allerdings noch mit dem Begriff "Mutex" beschäftigen.
3. Der Satz
ist m.E. gut misszuverstehen. Bis 64k große Blöcke (abzüglich Header) können per TCP als Jumbo-Frames auf einmal versendet werden. Außerhalb des LANs ist die MTU typ. kleiner z.B. 1500. Die einzelnen Pakete können durcheinander, doppelt oder auch mal nicht ankommen. Der "Netzwerkstack" (OSI lässt grüßen) sorgt aber durch eine Nummerierung der Pakete und durch ACK/Resend, dass wenn wir mit einer TCP-Verbindung die Pakete abholen, diese eben schon der Reihe nach ankommen. Der Datenstrom also konsistent aber nicht echtzeitfähig ist. Bei UDP ist das anders.Bei TCP wird nur gewährleistet das die Daten bis 64kB konsistent in der richtigen Reihenfolge übertragen werden.