Einzelnen Beitrag anzeigen

Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#8

AW: Re: Serversocket ClientRead Problem

  Alt 26. Jun 2020, 13:24
Sorry, dass ich einen so alten Thread aufwärme, aber ich habe ein Verständnisproblem mit der folgenden Erklärung:

[…] Grundlegender Ablauf, welcher in deiner ClientRead sein sollte:

1. neue Daten empfangen
2. neue Daten an den Puffer hinten anhängen (s_receive bei dir)
3. vom Anfang des Puffers nachschauen ob ein komplettes Packet enthalten ist (wenn nein, dann Schritt 7)
4. das empfangene Packet aus dem Puffer rausschneiden (also Puffer vorne um diese Länge kürzen)
5. rausgeschnittenes Packet verarbeiten (deine Handle() Methode)
6. zurück zu Punkt 4 (es können mehr als ein komplettes Packet angekommens ein)
7. fertig, Ende der OnClientRead

[…]
Im Schritt 5 wird ein Paket mit Handle() verarbeitet.
Aber was passiert, wenn Handle() sehr lange braucht und in der Zwischenzeit über die TCP-Verbindung neue Daten eintreffen,
wie wird dann "hintenrum" verfahren(?):
- Wird ClientRead parallel (also in einer neuen "Instanz") aufgerufen? (da müssten ClientRead und auch Handle() ja threadsicher sein)
- Oder wartet "die Verbindung" so lange, bis Handle() abgelaufen ist, und ruft dann ClientRead erneut auf?

Falls das eine Rolle spielt, ich verwende einen nicht-blockierenden ServerSocket.

Grüße
Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat