Zur Zeit versende ich die Dateien mittels SendStream, nur kann man da die Übertragung nicht abbrechen. Also dachte ich mir, das ich den Stream in kleine Teile aufsplitte und somit die Übertragung einfach unterbrechen kann. Dazu habe ich folgende Code geschrieben:
Delphi-Quellcode:
procedure TFileClient.SendData(Sender: TObject; Socket: TCustomWinSocket);
var Header: AnsiString;
Size: Int64;
Stream: AnsiString;
const
MaxSize = 1024;
begin
if Assigned(FFile) then
begin
Header := #5+'header'+#6+ExtractFileName(FFile.Filename)+#6+IntToStr(FFile.Stream.Size)+#6+'/header'+#7;
Socket.SendBuf(Header[1], Length(Header));
if FFile.Stream.Size < MaxSize then Size := FFile.Stream.Size
else Size := MaxSize;
SetLength(Stream, Size);
while FFile.Stream.Read(Stream[1], Size) <> 0 do
begin
//sleep(50);
//Application.ProcessMessages;
Socket.SendBuf(Stream[1], Size);
if FFile.Stream.Size-FFile.Stream.Position < MaxSize then Size := FFile.Stream.Size-FFile.Stream.Position
else Size := MaxSize;
SetLength(Stream, Size);
end;
end;
end;
Nur kommt da irgendwie garnichts vom Stream an, erst wenn ich das Sleep und das Application.ProcessMessages einfüge sendet er die Daten, aber die Geschwindigkeit der Übertragung leidet darunter und wenn ich die zeit bei Sleep kleiner wähle, bricht er die Übertragung sozusagen mittendrin ab und es wird nichts mehr versendet. Weiß jemand woran das liegt oder gibt es eine bessere Möglichkeit den Stream gesplittet zu versenden, so das man die Übertragung zwischendurch abbrechen kann.