Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Datei gesplittet über TClientSocket/TServerSocket versenden (https://www.delphipraxis.net/109610-datei-gesplittet-ueber-tclientsocket-tserversocket-versenden.html)

hugo1990 4. Mär 2008 14:47


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:
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz