Danke erst mal!
So wie im Code-Beispiel funktioniert es nicht. Aber das Beispiel im Anhang werde ich mir mal ansehen. Vielleicht liegt es daran, dass ich FStream gleich als TFileStream und nicht als TStream definiere.
Hier noch mal die neueste Version des Codes:
Delphi-Quellcode:
// Client
procedure TSendeForm.DateiSenden;
var FStream : TFileStream;
IDS : TidStreamVCL;
begin
TCPSender.Host := Host;
FStream := TFileStream.Create(DateiName, fmOpenRead);
IDS := TidStreamVCL.Create(FStream);
with TCPSender do
begin
Connect;
try
Socket.Write(IDS, 0, true);
finally
Disconnect;
end;
end;
FStream.Free;
IDS.Free;
end;
// Server
procedure TEmpfangsForm.TCPReceiverExecute(AContext: TIdContext);
var FSTream : TFileStream;
SizeOfIncomingStream : Integer;
IDS : TidStreamVCL;
begin
FStream := TFileStream.Create(DateiName, fmCreate);
IDS := TidStreamVCL.Create(FStream);
with AContext.connection do
begin
try
SizeOfIncomingStream := Socket.ReadInteger;
Socket.ReadStream(IDS, SizeOfIncomingStream);
finally
Disconnect;
end;
end;
try
FStream.CopyFrom(IDS.VCLStream, IDS.VCLStream.Size);
except
// Nichts
end;
FStream.Free;
IDS.Free;
// (Weitere Behandlung der Datei)
end;
Mal sehen...