Entwickler-Ecke

Netzwerk - FTP - Bandbreiten-Limitierung


Raven280438 - Mo 05.12.11 14:33
Titel: FTP - Bandbreiten-Limitierung
Hi,

ich habe ein Progamm, mit dem man u.A. Dateien per FTP runterladen kann. (per FtpWebRequest).

Jetzt möchte ich aber gerne die Bandbreite, die genutzt wird, begrenzen.

Meine Idee wäre zu verfolgen, wieviele Bytes in einer bestimmten Zeitperiode runtergeladen wurden (z.B. pro Sekunde, oder pro Zehntelsekunde etc.) und wenn das Limit erreicht ist, per Sleep für den Rest der Zeitperiode den Thread anzuhalten (der FTP-Transfer läuft in einem extra Thread).
Ist diese Idee praktikabel oder gibt es bessere Lösungen?


Gruß


Yogu - Di 06.12.11 18:59

Hallo,

dieses C#-Open-Source-Programm [http://www.codeproject.com/KB/IP/MyDownloader.aspx] bietet eine Option, die Bandbreite für einen Download zu begrenzen. Du kannst dir ja mal den Quellcode dazu anschauen.

Grüße,
Yogu


Raven280438 - Mi 07.12.11 10:05

Hi,

danke für die Antwort.
Der Quellcode ist ziemlich komplex, ich hoffe ich hab an der richtigen Stellen gesucht.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
         internal void WaitFor()
         {
              if (enabled)
              {
                  double totalRate = DownloadManager.Instance.TotalDownloadRate;
  
                  if (totalRate > maxLimit)
                  {
                      currentWait += BalancerUp;
                  }
                  else
                  {
                      currentWait = Math.Max(currentWait + BalancerDown, 0);
                  }
  
                  Thread.Sleep(TimeSpan.FromMilliseconds(currentWait));
  
                  Debug.WriteLine("TotalDownloadRate = " + totalRate);
                  Debug.WriteLine("maxLimit = " + maxLimit);
                  Debug.WriteLine("currentWait = " + currentWait);
              }
          }


Das sollte doch genau Das sein, wie ich es mir oben gedacht habe, oder?



Gruß


cemolade - Mi 07.12.11 23:46

jap