AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi RIESEN-Dateitransfer mit Indy
Thema durchsuchen
Ansicht
Themen-Optionen

RIESEN-Dateitransfer mit Indy

Ein Thema von ATwardz · begonnen am 3. Dez 2003 · letzter Beitrag vom 4. Dez 2003
Antwort Antwort
ATwardz

Registriert seit: 12. Mai 2003
205 Beiträge
 
Delphi 7 Professional
 
#1

RIESEN-Dateitransfer mit Indy

  Alt 3. Dez 2003, 18:29
Hi,

ich habe vor einiger Zeit schonmal ein Programm geschrieben mit welchem man Dateien versenden kann!
Das Problem was mir aufgefallen ist, ist das sich mit der Grösse der Datei die Geschwindigkeit stark abnimmt!
Während eine 3 Mb grosse Datei in 1 Sekunde verschickt wird(Lan), braucht eine 30 Mb Datei schon mindestens 1 Min obwohl sie nur ca 10 Sek brauchen dürfte und bei 100 Mb brauch ich vor einer halben Stunde nicht nachzuschauen! Noch grossere Dateien bräuchten vermutlich Tage!

Meine Frage ist nun, wie kann ich Dateien verschicken deren Grösse keine relevanz spielt!
- Vielleicht die Dateien zerstückeln und nachher weider zusammensetzen und wenn, wie mache ich das?
- Oder kann ich vielleicht was mit dem Pufferspeicher regeln?

Und noch eines am rande, obwohl ich mir hier alle Tuts/Beträge durchgelsen habe, bekomme ich keine Fortschrittsanzeige angezeigt obwohl ichg einen extra Thread verwende und ANTI-FREEZE

Hilfe wäre sehr nett!

DANKE
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#2

Re: RIESEN-Dateitransfer mit Indy

  Alt 3. Dez 2003, 18:41
Der Weihnachtsmann sagt
Hohoho...Ich hab ein Geschenkt für dich, das direkt aus der DP Suche kommt


Geschenk

Man liest sich, Rudolf, the red nos....ähmmm Stanlay
  Mit Zitat antworten Zitat
ATwardz

Registriert seit: 12. Mai 2003
205 Beiträge
 
Delphi 7 Professional
 
#3

Re: RIESEN-Dateitransfer mit Indy

  Alt 3. Dez 2003, 20:53
DANKE!
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#4

Re: RIESEN-Dateitransfer mit Indy

  Alt 3. Dez 2003, 22:17
Sind die Übertragungszeiten nur in Deinem Programm so gigantisch, oder auch, wenn man sich die Files per Windows-Explorer über eine Freigabe zieht?
Falls du sowas noch nicht getestet hast, würde ich das vielleicht erstmal tun - ich kann mir nicht vorstellen, das das Splitten der Dateien eine Linderung der Schmerzen bringt!
Ich tippe eher auf ein Netzwerkproblem... falsche Paketgröße, Kollisionen oder ähnliches.

Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
ATwardz

Registriert seit: 12. Mai 2003
205 Beiträge
 
Delphi 7 Professional
 
#5

Re: RIESEN-Dateitransfer mit Indy

  Alt 3. Dez 2003, 22:46
ne ne , unter Windows klapp alles perfekt, ich denke ich weiss woran es liegt!
Die DAtei bleibt einfach im Speicher bis sie fertig übertragen worden ist! Da Indy einen Buffer von 32 Mb hab wir das dann eng!
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#6

Re: RIESEN-Dateitransfer mit Indy

  Alt 3. Dez 2003, 23:05
Das heißt, der Client der die große Datei empfängt, fängt an rumzuswappen? (Swap = Auslagerungsdatei...)

Womit machst du das denn? Mit idTCPClient (bzw. Server), oder mit anderen Komponenten?

Gruß

Wormid


(Wenn es tatsächlich an dem Buffer von Indy liegt, dann revidiere ich meine Aussage aus dem letzten Post: Dann bringt es doch was, die Datei zu zerhacken. Man müsste sich nur ein bissel "Protokoll" einfallen lassen, die dem Client mitteilt, das jetzt ne Datei in Chunks kommt - aber ich zähle auf dich und vertraue dir voll und ganz, das du das auf die Reihe bekommst! )
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
ATwardz

Registriert seit: 12. Mai 2003
205 Beiträge
 
Delphi 7 Professional
 
#7

Re: RIESEN-Dateitransfer mit Indy

  Alt 4. Dez 2003, 12:31
Ich benutze idTCPClient!

ICh habe es so geprüft das ich den Speicher auf 5 Mb reduziert habe und bingo nun braucht auch eine 3 Mb Datei länger!
Das mit dem zerstückeln ist schon irgendwie schei**e aber es müsste gehen wenn ich einfach vor dem eigentlichen Transfer die Packat grösse und anzahl schicke und dann an jedas packet eine ID anhänge!
Mein Problem wird eher sein das ich die Dateien erst auf die Festplatte auslagen muss und im nächsten Thread zusammensetzen muss!
Aber ich versuche es erstma!

Danke nochmals!

@wardz
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#8

Re: RIESEN-Dateitransfer mit Indy

  Alt 4. Dez 2003, 13:35
Zitat von ATwardz:
ne ne , unter Windows klapp alles perfekt, ich denke ich weiss woran es liegt!
Die DAtei bleibt einfach im Speicher bis sie fertig übertragen worden ist! Da Indy einen Buffer von 32 Mb hab wir das dann eng!
Hmmm.. also ich habe Indy 9.0.4 und dort schreibt er standardmässig immer 32 KB, löscht den Speicher, schreibt wieder 32KB usw. bis die komplette Datei verschickt wurde.
Siehe IdTCPConnection.pas ab Zeile 891.

Dieser Wert (32 KB) kann mit IdTCPClient1.SendBufferSize verändert werden.
  Mit Zitat antworten Zitat
Kamil

Registriert seit: 17. Aug 2002
178 Beiträge
 
#9

Re: RIESEN-Dateitransfer mit Indy

  Alt 4. Dez 2003, 13:36
Bin mir jetzt nicht ganz sicher, aber mit OpenWriteBuffer kannst du doch die Größe des Buffers bestimmen:

Zitat:
procedure OpenWriteBuffer(const AThreshhold: Integer);

Parameters

const AThreshhold: Integer = -1

Number of bytes to buffer before flushing data in the write buffer to the peer. Default value is -1.
Delphi-Quellcode:
    OpenWriteBuffer(5*1024*1024); //5mb
    try;
      WriteStream(AStream);
      // Close the write buffer and have Indy now transmit it
      CloseWriteBuffer;
    except
      // Clear what we had buffered, and disable write buffering
      CancelWriteBuffer;
      // Re-raise the exception so it is not masked
      raise;
    end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:23 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