
Zitat von
Neutral General:
Hast du evtl grad ein Beispiel parat für ein Server (Client) der aufpassen muss, wann er was mit welchen Daten machen kann?
Hm, kommt ganz drauf an auf welcher Ebene man ansetzen will.
Wenn du die Indys, Synapse oder sonst ne Library verwendest, musst du i.d.R. garnicht aufpassen, weil dir hier ja schön die Events beim Datenempfang u.ä. bereitgestellt werden (zumindest die Indys sind glaube ich auch von Haus aus schon multithreaded).
Wenn du dir allerdings selbst irgendeine Funktion zusammenbaust kann folgendes passieren:
1. Du schickst eine asynchrone Anfrage an einen Server (sprich du führst sie in einem eigenen Thread aus).
2. Der Server ist gerade nicht erreichbar, sprich dein Thread arbeitet sich nen Ast

3. Dein Programm bekommt davon aber weiter nichts mit, weil du keine ausreichende Kontrollfunktion implementiert hast...
4. Du versuchst mit der Antwort vom Server (die ja nie bei dir angekommen ist) irgendwann irgendetwas zu machen, beispielsweise hättest du einen Integer erwartet, aber nichts bekommen, castest also nichts auf Integer und bumms ist dein Programm abgestürzt
Das gleiche kann auch passieren, wenn der Server antwortet, aber du schneller auf die Antwort zugreifen willst, als sie verfügbar ist, beispielsweise wenn du die Methode, die die Antwort braucht, direkt nach dem Start der asynchronen Anfrage ausführst. Dann ist die Methode nämlich mit ziemlicher Sicherheit schneller als deine Internetverbindung