Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: TSocket - Online Spiel Kommunikation

  Alt 18. Mär 2012, 21:29
Windows puffert intern Daten, die geschickt werden. Dieser Puffer hat eine bestimmte Größe (kann man selber auch setzen; max Größe = 64kb). Wenn du nun 10 x klickst und der aber nur 1 mal geschickt hat in der Zwischenzeit, so landen alle Daten, die noch geschickt werden müssen, im Puffer (9x).
Überschreibt dies den Puffer, so kommts zu nem Fehler und die Sendefunktion liefert als Result 0 oder einen negativen Wert zurück.
Das kann dann der Fall sein, wenn zB nur 4 weitere Datensätze reinpassen in den Puffer - damit wären wir bei den 5 Befehlen, die auch ankommen - so wie von dir beschrieben.

Lösung des Problemes - reagiere auf den Resultwert von der Sendefunktion.
Lege selbst (am besten einen) Queue Puffer an, dem du Datensätze draufpusht und der seperat abgearbeitet wird - per Sendebefehl wird solange gesendet, bis alle Datenabgerbeitet werden; und der Datenpointer wird natürlich um die Anzahl der Bytes, die geschickt wurden, inkrementiert. Kann mal etwas nicht geschickt werden, sei es nun weil der Puffer zu klein ist (oder sonstwas) so inkrementierst du einfach deinen Datenpointer nicht und beim nächsten Sendeversuch wird nochmal probiert usw. usf

Zu deinem Geschwindigkeitsproblem - ich weiß nicht, wie du das ganze nun wirklich gelöst hast, aber, sofern der Server schnell ist, sollte es da eig. keine Probleme geben. Evt. würde ich mir überlegen, von TCP auf UDP zu wechseln, sofern du das nicht bereits hast!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat