Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

Indy 10 TCP Client Server -> MemoryStreams übertragen

  Alt 9. Okt 2012, 16:33
-> Delphi XE Prof, Indy 10

Hintergrund: Ich möchte StringListen zwischen Client und Server übertragen.
Die Strings können SEHR lange Zeilen enthalten, da ich u.U. Bilddaten als Base64 übertragen will.

Teilweise kann ich bereits Daten übertragen. Ich möchte jedoch unterschiedliche Varianten austesten und habe dazu mal ein Testprojekt erstellt.
Das Projekt (XE) ist angehängt.

Die Problembeschreibung ist schwierig, da die Probleme bei unterschiedlichen Varianten in verschiedenen Formen auftreten.
Daher habe ich dies mal als Video erstellt: http://youtu.be/d852TASq34c

Im wesentlichen gib es folgende Fragen:
- Wie kann ich die übertragenen Daten in Memos schreiben, ohne dass es Syncronisationsprobleme gibt? (Bei manchen Versuchen hat es funktioniert, aber nicht immer.)
- Wie funktioniert die Übertragung (ReadLn und WriteLn) mit einem Endekennzeichen (#0 oder '|') in beide Richtungen?
- Wie funktioniert die Übertragung über Streams in beide Richtungen?

Ich habe viel im Netz gesucht, bin aber bisher nicht zurecht gekommen.
Vielleicht können wir das Projekt mal so ausbauen, dass wir hier ein komplettes Demo für die unterschiedlichen Übertragungsformen haben...

Zur Umschaltung der Übertragungsform habe ich eine Compilerkonstante eingerichtet:
Delphi-Quellcode:
const
  CompileModeFoot = 0;
  CompileModeLinesChanged = 1;
  CompileModeLinesEnd = 2;
  CompileModeStream = 3;
  CompileMode = CompileModeStream; // <- hier auswählen
Da die auftretenden Probleme recht komplexe Zusammenhänge haben, ist natürlich auch das Demoprojekt und die Fehlerbeschreibung etwas umfangreicher.
Wäre nett, wenn sich mal jemand die Zeit nehmen könnte...
Angehängte Dateien
Dateityp: zip Indy10TCPStreamTest.zip (704,0 KB, 40x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat