2010-06-17 5 views
5

J'ai écrit une application qui synchronise les dossiers locaux avec des dossiers en ligne, mais il mange toute ma bande passante, comment puis-je limiter la quantité de bande passante utilisée par l'application? (par programme)?Limiter les vitesses de bande passante

+0

À quelle fréquence vérifiez-vous les mises à jour? Et à quelle fréquence as-tu * besoin * de vérifier? Diminuer l'intervalle de mise à jour aidera probablement beaucoup. –

+4

Question en double. Voir -> http://stackoverflow.com/questions/847422/how-to-programatically-limit-bandwidth-usage-of-my-c-windows-forms-application –

Répondre

2

Jetez un oeil à http://www.codeproject.com/KB/IP/MyDownloader.aspx

Il utilise la technique bien connue qui se trouve dans Downloader.Extension \ SpeedLimit

Fondamentalement, avant que d'autres données sont lues d'un flux, un contrôle est effectué sur la façon beaucoup de données ont effectivement été lues depuis l'itération précédente. Si ce débit dépasse le débit maximum, la commande de lecture est suspendue pendant un temps très court et la vérification est répétée. La plupart des applications utilisent cette technique.

0

Je dirais "ne pas". À moins que vous ne fassiez quelque chose de vraiment faux, votre programme ne devrait pas être accaparer la bande passante. Votre routeur doit équilibrer la bande passante disponible entre toutes les demandes.

Je vous recommande de faire ce qui suit:

a) Créer hash md5 pour tous les fichiers. Comparez les hachages et/ou les dates et tailles des fichiers et synchronisez uniquement les fichiers modifiés. Sauf si vous synchronisez des fichiers volumineux, vous ne devriez pas avoir à synchroniser beaucoup de données.

b) Limiter le débit d'envoi. Dans votre fil de téléchargement, lisez les fichiers en blocs de 1 à 8 Ko, puis appelez Thread.Sleep après chaque tronçon pour limiter le débit. Vous devez le faire sur le côté de téléchargement cependant.

c) Tuyau tout à travers un flux Gzip. (System.IO.Compression) Pour les fichiers texte, cela peut réduire la taille des données qui doivent être transférées.

Espérons que cela aide!

+0

thanx ... vos commentaires sur les taux de compression et d'envoi Vraiment bien pratique aussi. mes dossiers peuvent être jusqu'à 30 gig ... et la limite doit être définie sur l'application elle-même. "Paladin réfracté" m'a indiqué dans la bonne direction pour le réglage programmatique du taux. –

Questions connexes