Was ist der beste Weg zum Senden eines TMemoryStream über Indy?Indy und TStreams
Im Moment versuche ich:
procedure TClientForm.IdTCPClient1Connected(Sender: TObject);
begin
IdTCPClient1.IOHandler.Write(KStore.Size);
KStore.Position := 0;
IdTCPClient1.IOHandler.Write(KStore);
Memo1.Lines.Add('Client connected with server');
end
Und am Ende Server:
function MemoryStreamToString(M: TMemoryStream): string;
begin
SetString(Result, PChar(M.Memory), M.Size div SizeOf(Char));
end;
procedure TClientForm.IdTCPServer1Connect(AContext: TIdContext);
var
LStore: TMemoryStream;
Size: Int64;
LStore := TMemoryStream.Create;
LStore.Position := 0;
Size := AContext.Connection.IOHandler.ReadInt64();
AContext.Connection.IOHandler.ReadStream(LStore,Size);
end;
Aber trotz eines Mangels an Fehler, am anderen Ende mit, dass Speicher-Stream auf String-Funktion kehrt einfach zurück ???????????????????? in der Textdatei speichern ich es zu.
Der beste Weg, es zu senden, ist, es in der Art und Weise zu senden, wie der HTTP-Server es erwartet. Wie erwartet der Server? –
? Entschuldigung, ich bin mir nicht ganz sicher, was du meinst. –
Wie erwartet der Server die Stream-Daten? Ich meine, erwartet der Server eine POST- oder GET-Methode? in einem speziellen Parameter oder Feldname? –