Thema: Delphi on client read

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#4

Re: on client read [Porblem]

  Alt 5. Jun 2007, 20:20
Zitat von Florian Bernd:
Dies passiert, da die Delphi VCL nicht threadsafe ist. Beschäftige dich mal mit dem Delphi-Referenz durchsuchenSynchronize Aufruf ..
Hä? Was hat dies damit zu tun?

@Karg

Die Sockets übertragen einfach nur die Daten. Dabei garantieren sie dir keine Übertragung als Ganzes, sondern sie teilen die Daten wie sie sie gerade übertragen bekommen auf. So kann es abhängig von vielen Faktoren dazu kommen, dass du immer nur Teile bekommst. Von daher musst du über mehrere ClientRead Aufrufe die Daten sammeln, bis du ein Datenpacket an sich zusammen hast. Deshalb ist ein Protokoll nötig, damit du weisst, wann deine empfangenen Daten komplett sind und wann noch was fehlt und du noch weitere OnClientRead Aufrufe abwarten musst.

Als einfaches Protokoll würde schon reichen, dass du am Ende einer Botschaft ein besonderes Zeichen anhängst, welches dir auf der Empfangseite das Ende einer Botschaft anzeigt und somit ob du eine komplette Botschaft empfangen hast und wo diese aufhört (bzw. sogar die nächste anfängt).
  Mit Zitat antworten Zitat