Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdHTTP -> Bandbreite begrenzen (https://www.delphipraxis.net/84574-tidhttp-bandbreite-begrenzen.html)

meisteralex 18. Jan 2007 17:23


TIdHTTP -> Bandbreite begrenzen
 
Hi Leute, ich schreibe gerade ein Programm, wo ich unternaderem mit der TIdHTTP-Komponenten Daten übertrage
Ich möchte nun jedoch einstellen können, welche Bandbreite für das senden der Daten maximal zur Verfüg steht
Also ich möchte die Bandbreite z.b. auf 20kb/s begrenzen könen
Jemand ne idee ?

Christian Seehase 18. Jan 2007 17:31

Re: TIdHTTP -> Bandbreite begrenzen
 
Moin Alex,

das wird ohne Hilfsmittel nicht gehen.
Unter XP steht Dir dafür BITS zur Verfügung.
Dessen Anwendung ist im PSDK dokumentiert.

meisteralex 18. Jan 2007 17:47

Re: TIdHTTP -> Bandbreite begrenzen
 
gibt keine andere möglichkeit ?

Union 18. Jan 2007 17:58

Re: TIdHTTP -> Bandbreite begrenzen
 
Miss doch die Bandbreite und baue delays ein, wenn der Grenzwert überschritten wird.

meisteralex 18. Jan 2007 18:12

Re: TIdHTTP -> Bandbreite begrenzen
 
was meinst du damit genau und wie geht das ?

Union 18. Jan 2007 18:19

Re: TIdHTTP -> Bandbreite begrenzen
 
Die Daten überträgst Du doch. Also weißt Du auch, welche Größe die Daten über einen gegebenen Zeitraum haben. Das ist die benutzte Bandbreite. Ist die Dir zu groß, baust Du Pausen in Dein Programm ein (Pseudocode):
Delphi-Quellcode:
BenutzteBandBreite := BandBreite(InLetzten30SekundenUebertrageneDaten, 30);
if BenutzteBandBreite > 20*1024 then
   Delay(BerechneVerzögerung(BenutzteBandBreite));
UebertrageDatenInSendePuffer;

meisteralex 18. Jan 2007 19:29

Re: TIdHTTP -> Bandbreite begrenzen
 
und was ist bei größeren dateien ?
nehmen wir an ich habe eine 10mb datei
ich kann ja den http-post nicht unterbrechen

Union 18. Jan 2007 19:33

Re: TIdHTTP -> Bandbreite begrenzen
 
Zitat:

Zitat von meisteralex
und was ist bei größeren dateien ?
nehmen wir an ich habe eine 10mb datei
ich kann ja den http-post nicht unterbrechen

Dann musst Du eben kieine 10Mb am Stück übertragen. Oder Du machst das in einer Progress-Funktion.

SirThornberry 18. Jan 2007 19:34

Re: TIdHTTP -> Bandbreite begrenzen
 
doch kannst du indirekt. Und zwar kannst du Streams verwenden bzw. empfangen. Wenn du dir also von TStream oder einem Nachfahren eine eigene Klasse ableitest kannst du in den Methoden ReadBuffer und WriteBuffer (ich hoff die hießen so, kann im Moment nicht nachschauen) ein Sleep etc. einbauen um das ganze zu verzögern.

meisteralex 18. Jan 2007 20:35

Re: TIdHTTP -> Bandbreite begrenzen
 
puh das ist glaub ich zu hoch für mich

SirThornberry 18. Jan 2007 20:38

Re: TIdHTTP -> Bandbreite begrenzen
 
Naja, aus einem Stream wird über die Read und Write Methoden gelesen und geschrieben. Wenn du also da eine verzögerung einbaust wird das lesen und schreiben verzögert. Und wie man von klassen ableitet und Methoden überschreibt sollten grundlagen der OOP sein welche supi unter www.delphi-source.de erklärt werden.

Hobby-Programmierer 19. Jan 2007 08:05

Re: TIdHTTP -> Bandbreite begrenzen
 
Moin ...,
schau Dir mal die ICS-Komponenten an. Dort kannst Du sowohl beim Http als auch beim Ftp Clienten die Bandbreite einschränken. Selbst wenn Du bei den Indys bleiben möchtest kannst Du zumindest nachschauen wie das dort gelöst wurde.

[edit]
Zitat:

Zitat von Union
Miss doch die Bandbreite und baue delays ein, wenn der Grenzwert überschritten wird.

Zumindest zum Messen der Banbreite habe ich noch was gefunden
[/edit]

LG Mario


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 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