Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Indy TCPServer Reihenfolge bei vielen Verbindungsaufbauten (https://www.delphipraxis.net/165405-indy-tcpserver-reihenfolge-bei-vielen-verbindungsaufbauten.html)

emteg 28. Dez 2011 18:10

Indy TCPServer Reihenfolge bei vielen Verbindungsaufbauten
 
Hey,

im Rahmen eines Testszenarios habe ich ein merkwürdiges verhalten bei meinem Indy 10 TCPServer beobachtet. Mein Server lauscht auf seinem Port und von einem anderen Rechner wird eine verbindung aufgebaut, ein string gesendet und die verbindung wieder geschlossen. Das passiert mehrfach und sehr schnell hintereinander.

Auf das Empfangen der String reagiere ich in TCPServer.Execute mit einem AContext.Connection.IOHandler.ReadLn(enUTF8). Merkwürdigerweise stimmt die Reihenfolge, in der mein Programm die String erhält nicht mit der Reihenfolge des Sendens überein.

Ich vermute mal, dass der Scheduler des TCP Servers hier für jede Verbindung einen neuen Thread aufmacht und dass die Reihenfolge, in der das an das TCPServer.Execute weitergereit wird quasi zufällig ist. Gibt es eine möglichkeit die Reihenfolge festzustellen, in der die Nachrichten eingetroffen sind?

Furtbichler 28. Dez 2011 20:06

AW: Indy TCPServer Reihenfolge bei vielen Verbindungsaufbauten
 
Offenbar gibt es keine Reihenfolge, das ist auch nicht definiert. Du müsstest die Reihenfolge über Sequenznummern o.ä. herstellen, ähnlich einem IP-Stack. Der macht das nämlich genauso, denn die TCP-Pakete kommen auch nicht in der Reihenfolge an, wie sie verschickt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz