Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Indy Server und Client

  Alt 19. Apr 2014, 13:41
Der Server arbeitet die Anfragen automatisch in Threads ab. Das heißt, der Mainthread wird durch die Abfragen nicht gebremst.
Der Server muss immer mal etwas Zeit zum aufräumen haben. Zu viele ständige Anfragen in kurzer Zeit verkraftet er nicht.
Der Server benötigt nicht generell "besondere" Zeit zum Aufräumen: er benötigt Zeit, falls umfangreiche Objekte /und Resourcen während OnExecute erzeugt und freigegeben werden. Falls viele Anfragen gleichzeitig eintreffen, werden diese auf vorhandene Prozessoren verteilt und konkurrieren um die Rechenleistung, so dass der Server bis 100% ausgelastet ist.
Das Sleep(1000); im OnExecute sorgt dafür, dass der Server einmal pro Sekunde Daten an den Client sendet. Wenn der Client innerhalb von 500 Millisekunden keine Antwort erhält, erhält er ein Timeout, und versucht dann sofort wieder Daten zu empfangen. Der Server sendet nur, wenn er gerade "will" - im Beispielcode also erst nach Ablauf einer Sekunde. Client und Server müssen nicht zeitsynchronisiert sein: wenn der Server das Intervall ändert (zum Beispiel immer zwanzig Sekunden zu pausieren), muss der Client Code nicht geändert werden.
Michael Justin
habarisoft.com

Geändert von mjustin (19. Apr 2014 um 13:46 Uhr)
  Mit Zitat antworten Zitat