Einzelnen Beitrag anzeigen

FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#6

AW: TServerThread.ClientExecute; Buffer Problem

  Alt 5. Okt 2011, 07:04
Ich habe bessere Erfahrungen mit einem anderen Protokoll gemacht. Bei dem von Sir Rufo vorgeschlagenen hat man Probleme, wenn die Länge nicht korrekt übertragen wird oder es kurzzeitige Aussetzer gibt. Denn entgegen der Theorie bietet TCP alles andere als 'QoS'.

Der Empfänger muss neben dem Ende eines logischen Paketes auch den Anfang sicher erkennen können.

Ich verwende Frames, also
[Start-Bytes] [Daten] [Prüfsumme][Ende-Bytes]

1. Der Empfänger verwirft alles, bis er die Start-Bytes-Sequenz empfängt. Sodann liest er alles bis zur Ende-Bytes-Sequenz.
2. Sollt die Start- bzw. Ende-Byte-Sequenz übertragen werden, so wird anstelle dieser Sequenz (sie würde ja den Empfänger durcheinanderbringen) einfach etwas anderes übertragen (Stichwort: Escapen). Das "Andere" ist dem Empfänger bekannt und wenn er das empfängt, übersetzt er das wieder zurück.

Wir arbeiten in Fabriken, bei denen das Netzwerk sehr instabil ist und daher haben wir so ziemlich alles erlebt, was übertragungstechnisch passieren kann. Hier wird sogar noch das Datenpaket über einen Längenpräfix abgesichert.. Es wäre denkbar, das die Endesequenz verschluckt wird und dann würde o.g. Verfahren endlos weiterlesen.

Als letzten Notnagel haben wir eine maximale Paketlänge von 1MB vereinbart.
Das Bild hängt schief.
  Mit Zitat antworten Zitat