IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Appication Client/serveur : Limiter la bande passante ?


Sujet :

Web & réseau Delphi

  1. #1
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut Appication Client/serveur : Limiter la bande passante ?
    a tous !

    je cherche a integrer dans une appli client/serveur (indy) une option permettant de choisir la bande passante maxi en evoy comme en reception (un peut comme les softs de p2p), pour le moment, je ne vois pas du tout par ou commencer, je peut connaitre la bande passante utilisée, et lancer un evenement lorsque je la depasse, mais je n'ai pas trouvé de méthode pour la ralentire sans stopper le tranfert...

    une idée ?

    thanks !
    D7/2007 - Asphyre 4.1

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    J'ai développé une unité d'upload et download de fichier avec Indy ya un ptit moment déjà... Je crois me souvenir que j'ai trouvé une propriété pour définir la taille du buffer qui est par défaut à 8ko il me semble. J'ai ensuite développé la même unité avec ICS, et j'ai été obligé d'ajouter un peu de code à l'unité HttpProt pour pouvoir définir cette taille du buffer.
    Bref, en fait il faut aussi ajouter un delai (non bloquant) dans la procédure déclenchée par l'évènement de reception (ou d'envoi) de bloc... Ainsi, en diminuant la taille du bloc et en ajoutant un délai à chaque bloc lu ou écri, tu auras une diminution des ressources utiliséés par ton programme tout en conservant sa fluidité et sans bloquer la liste des messages windows.
    J'utilisais cette méthode pour obtenir une barre de progression de téléchargement fluide, et pour économiser de la bande passante pour les autres appli utilisant la connexion.

    Dans ton cas, je crois que tu possèdes aussi un évènement déclenché à chaque fin ou départ de lecture ou d'écriture de bloc... Il suffit donc d'ajouter un délai dans ces procédures évènementielles et trouver la propriété qui permettra de définir la taille du bloc de transfert. Si tu sèches, fais moi voir ton code, à+
    De retour parmis vous après 10 ans!!

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Utilises un IdInterceptThrottler. Il fonctionne de la même manière que t'as décrit Sub0.
    "It's more fun to compute !"

  4. #4
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    merci à tout deux
    jvais essayer ca
    D7/2007 - Asphyre 4.1

  5. #5
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    heu ... je n'ai pas trouvé le IdInterceptThrottler, est ce un compo "graphique" ou doi-je simplement l'appeler ?
    ps : indy 9.
    D7/2007 - Asphyre 4.1

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Heu, chez moi, avec Indy 10, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uses IdInterceptThrottler, [...]
    Assignation du TIdInterceptThrottler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TCPClient.IOHandler.Intercept := TIdInterceptThrottler.Create();
    Utilisation de sa propriété BitsParSec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TIdInterceptThrottler(FTCPClient.IOHandler.Intercept).BitsPerSec := Value;
    Destruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TIdInterceptThrottler(FTCPClient.IOHandler.Intercept).Free;
    Je ne sais pas comment ça marche exactement avec Indy 9, mais il me semble que cela devrait quand même fonctionner... De mémoire, je crois que tu n'a pas besoin d'utiliser le IOHandler avec cette version puisque la propriété Intercept existe directement sur les clients TCP.
    "It's more fun to compute !"

  7. #7
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    pas de bol
    ca passe pas sous indy 9 apparament, je vais me trouver la 10...

    EDIT : jvien de tester avec indy 10, mais l'utilisation de l'unité IdInterceptThrottler m'est refusé dans les uses, work in progress..... 8)
    D7/2007 - Asphyre 4.1

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Citation Envoyé par souch
    IdInterceptThrottler m'est refusé dans les uses, work in progress..... 8)
    Comment ça, refusé ?

    Personnellement, j'ai installé Indy 10 depuis ce lien :
    http://www.atozed.com/indy/plus/Files.iwp
    c'est un installateur automatique, c'est très pratique...

    ...puis remis à jour tous leur fichiers depuis leur serveur ftp (ftp.fulgan.com).

    Si ça ne marche pas, envoie moi un mail, je t'enverrais mon dossier source Indy, qui lui marche...
    "It's more fun to compute !"

  9. #9
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    ok, j'avais mal désinstallé la précédante version d'indy, now j'ai bien les compo de la 10 (jolie icones d'ailleur ) mais encore un souci (décidement...)

    [Erreur fatale] Unit1.pas(7): L'unité IdInterceptThrottler a été compilée avec une version différente de IdIntercept.TIdConnectionIntercept


    heu ... ?

    EDIT -> J'ai rien dit, aprees supprerssion manuel des fichiers indy dans lib/ et réinstallation, plus de problemes

    yapukacoder :-)

    D7/2007 - Asphyre 4.1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. limiter la bande passante
    Par imeys dans le forum Administration
    Réponses: 2
    Dernier message: 19/06/2006, 21h06
  2. Programmation sockets : limiter la bande passante
    Par e-t172 dans le forum Développement
    Réponses: 2
    Dernier message: 14/12/2005, 15h22
  3. Serveur dedié et bande passante ?
    Par ShinJava dans le forum Hébergement
    Réponses: 9
    Dernier message: 03/06/2005, 10h29
  4. [Stratégie] Limiter la bande passante
    Par Neuromancer dans le forum Développement
    Réponses: 7
    Dernier message: 17/01/2005, 15h29
  5. Limiter la bande passante
    Par naili dans le forum Réseau
    Réponses: 3
    Dernier message: 15/01/2004, 08h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo