AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi indy stream (Dateitransfer) wird immer langsamer..
Thema durchsuchen
Ansicht
Themen-Optionen

indy stream (Dateitransfer) wird immer langsamer..

Ein Thema von supermuckl · begonnen am 11. Dez 2003 · letzter Beitrag vom 11. Dez 2003
 
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#1

indy stream (Dateitransfer) wird immer langsamer..

  Alt 11. Dez 2003, 00:37
hab folgendes problem
hab indy tcp client und server eingesetzt ( neuste version )
und damit will ich dateien transferieren

wenn ich das nun im lan mache kann ich zwar fehlerfrei transferieren aber:
1. transfer wird nach start immer langsamer bis etwa < 200 kbs @ lan !
2. client braucht knappe 80-90% CPU wärend dem transfer
3. client hat ca 40 - 50 MB an größe im ram wärend dem transferieren ( danach nimmer )
server hat immer 1-4% CPU auslastung und normale größe im RAM ( 4-5MB )

wenn ich übers internet transferiere hab ich noch folgendes problem dazu:
1. z.b. eine 30mb datei wird in 1min übertragen ( hab normales DSL )
und 2. datei ist dann aufm zielrechner 30mb groß, is aber CRC mäßig kaputt ( streaming funzt wohl net richtig )
aber im lan is CRC ok nach dem transferieren !!

client code:
Delphi-Quellcode:

    fs := TFileStream.Create(uploadfile, fmOpenRead or fmShareDenyWrite); //Datei in FileStream einlesen
        form1.filebar.Max := fs.Size;
        form1.Label12.Caption := inttostr(fs.Size);
        form1.filebar.Position := 0;
    try
    form1.client.OpenWriteBuffer;

    form1.timer1.enabled := true;
        try

        form1.client.WriteStream(fs,true,true);
        form1.client.CloseWriteBuffer;
        except
        form1.client.CancelWriteBuffer;
        end;
       finally
       form1.timer1.enabled := false;
       fs.free;
       end;

      form1.filebar.Position := 0;
     form1.Label12.Caption := '--';
     form1.Label10.Caption := '--';
     form1.Label14.Caption := '--';
     uploadoldstreampos := 0;
tcpclient einstellungen:
receive/send buffer: 32768 ( schon mehr und weniger getestet.. hat sich nix geändert )
ascii filter: false
maxlinelenght: 16384
maxlineaction: maException ( wird nich ausgelöst )

server code:

Delphi-Quellcode:

if (cmd = 'uplo') then begin
if fileexists(Tfilelistbox(actclient.fileb).Directory+'\'+data) then begin
  athread.Connection.WriteLn('uploEXS');

end else begin
  athread.Connection.WriteLn('uploOK');
   fs := TFileStream.Create(Tfilelistbox(actclient.fileb).Directory+'\'+data, fmCreate or fmShareExclusive);
    with AThread.Connection do begin
    try
      SizeOfIncomingStream := ReadInteger; //Größe des Streams empfangen
      ReadStream(fs, SizeOfIncomingStream); //und übergeben
    finally
      fs.Free;
    end;
end;

end;


end; // upload
die progressbar is übrigends schön am worken einfach alle paar sekunden fs.position auslesen
( hab ich auch schon weggelassen aber hat nix ausgemacht )

hat mir da einer ne idee ?
will jetzt net grad das mit dem filesplitten machen.. muss doch so auch gehen ?!
oder kann ich auch alternativ per writeln die ganze datei rüberbeamen bis ende erreicht usw ? oder is das noch schlechter wegen speed
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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 by Thomas Breitkreuz