![]() |
Datei gesplittet über TClientSocket/TServerSocket versenden
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:
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.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz