Zitat von
AnTiPrimaTe:
Beispiel
---------
Man verschickt zwei Kontakte über
TCP/
IP:
Max,Muster,Neuer Weg 12
und
Eva,Braun,Sternstrasse 14
beide Kontakte müssen z.B. in eine Datenbank abgespeichert werden.
Daten, die ankommen sehe wie folgt aus:
Max,Muster,Neuer Weg 12Eva,Braun,Sternstrasse 14
Wie machst Du das, wenn Du nicht weiß, wo ein Kontakt
anfängt und wo der endet?
Wenn Du aber:
<start>Max,Muster,Neuer Weg 12<end>
<start>Eva,Braun,Sternstrasse 14<end>
verschickst. kannst Du nach <start> und <end> parsen.
Nicht wahr?
Nein, so würde ich das nicht machen.
Ich hätte da für foldgenden Record in einer
unit, die Client und Server verwenden:
Delphi-Quellcode:
TKontakt = Record
Vorname : String[20];
Nachname : String[25];
Strasse : String[40];
end;
Diesen Record würde ich auf der Clientseite entsprechend füllen.
Wenn ich z.B. 5 Kontakte versenden möchte, würde ich die Kontakte in einem
TMemoryStream sammeln. Die Kontakte werden dann über TWinSocketStream.CopyFrom(MemoryStream,0)
zum Server befördert. Auf der Serverseite wird innerhalb die Repeat-Schleife der Inhalt
der Verbindung über TWinsocketStream eingelesen (Siehe oben).
Ob Du es glaubst oder nicht. Die einzelnen Kontakte stehen dann alle korrekt in FStream (siehe oben).
Jetzt kann ich mit FStream.Read(aKontakt,SizeOf(TKontakt)) die einzelnen Kontake aus dem Stream lesen und in die Datenbank schieben.
Evt. reden wir ja von unterschiedlichen Dingen