Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

STREAM QUI LIMITE LA BANDE PASSANTE


Information sur la source



Description

Après quelques longue heures de Google à chercher comment limiter la bande passante d'un flux (ou Stream), je suis tombé sur cette source :
http://www.codeproject.com/KB/IP/Bandwidth_throttling.aspx

Seulement cette classe ne fournis pas un flux constant. Alors je m'en suis inspiré pour en faire une qui lisse un peu plus le débit.
 

Source

  • using System;
  • using System.Collections.Generic;
  • using System.Text;
  • using System.Reflection;
  • using System.IO;
  • namespace MaitreDede.Test
  • {
  • class Program
  • {
  • static void Main(string[] args)
  • {
  • //Paramétrage
  • //Chemin vers un gros fichier
  • string file = "grosfichier.zip";
  • //Bande passante en ko/s
  • int bandwidth = 20480;
  • //On récupére des info et on charge le ficher en mémoire
  • //On peut aussi lire directement le fichier à partir du disque
  • FileInfo info = new FileInfo(file);
  • long size = info.Length;
  • FileStream instr = File.OpenRead(file);
  • byte[] buffer = new byte[size];
  • MemoryStream ms = new MemoryStream();
  • int read;
  • while ((read = instr.Read(buffer, 0, buffer.Length)) > 0)
  • {
  • ms.Write(buffer, 0, read);
  • }
  • instr.Close();
  • ms.Position = 0;
  • //On crée le flux
  • ThrottleStream str = new ThrottleStream(ms, bandwidth);
  • //Top Chrono !!!
  • TimeSpan start = new TimeSpan(0, 0, 0, 0, Environment.TickCount);
  • while (str.Read(buffer, 0, buffer.Length) > 0)
  • {
  • Console.WriteLine("loop...");
  • }
  • //Terminé
  • TimeSpan stop = new TimeSpan(0, 0, 0, 0, Environment.TickCount);
  • //Statistiques
  • Console.WriteLine("Bande passante : " + bandwidth);
  • Console.WriteLine("Taille du fichier : " + size);
  • Console.WriteLine("Temps théorique : " + new TimeSpan(0, 0, (int)(size / bandwidth)));
  • Console.WriteLine("Durée totale : " + (stop - start));
  • }
  • }
  • }
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.IO;

namespace MaitreDede.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            //Paramétrage
            //Chemin vers un gros fichier
            string file = "grosfichier.zip";
            //Bande passante en ko/s
            int bandwidth = 20480;

            //On récupére des info et on charge le ficher en mémoire
            //On peut aussi lire directement le fichier à partir du disque
            FileInfo info = new FileInfo(file);
            long size = info.Length;
            FileStream instr = File.OpenRead(file);

            byte[] buffer = new byte[size];
            MemoryStream ms = new MemoryStream();
            int read;
            while ((read = instr.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
            instr.Close();
            ms.Position = 0;

            //On crée le flux
            ThrottleStream str = new ThrottleStream(ms, bandwidth);

            //Top Chrono !!!
            TimeSpan start = new TimeSpan(0, 0, 0, 0, Environment.TickCount);
            while (str.Read(buffer, 0, buffer.Length) > 0)
            {
                Console.WriteLine("loop...");
            }
            //Terminé
            TimeSpan stop = new TimeSpan(0, 0, 0, 0, Environment.TickCount);

            //Statistiques
            Console.WriteLine("Bande passante : " + bandwidth);
            Console.WriteLine("Taille du fichier  : " + size);
            Console.WriteLine("Temps théorique : " + new TimeSpan(0, 0, (int)(size / bandwidth)));
            Console.WriteLine("Durée totale : " + (stop - start));
        }
    }
}

Conclusion

Cette métheode n'est qu'une manière de faire parmis tant d'autres...

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Gérer le débit d'un flux [ par maitredede ] Bonjour,J'ai une connexions TCP entre mon appli client (object System.Net.TcpClient) et mon serveur.Ils communiquent en passant par un NetworkStream ( lire un flux xml [ par herve_labenere ] Bonjour,Je conçois actuellement un petit logiciel pour suivre les cours de la Bourse.J'utilise pour cela un webservice (http://www.webservicex.net/sto Recevoir un flux video avec activex [ par LePseudoQuiVaBien ] Bonjour cela fait plusieurs heures que je cherche mais je ne trouve pas. Je dois afficher un flux video venant d'une Camera IP mais je n'arrive pas. j Compression des flux et StreamReader [ par maitredede ] Bonjour,Je suis en train de coder une librairie de client/serveur pour un protocole assimilé à telnet. En gros, l'utilisateur se connecte avec telnet Charger une image haute résolution sur Compact framework / Cropping d'un image stream? [ par charliepben ] suite de http://www.csharpfr.com/infomsg_CSHARP-PERFORMANCE-PICTUREBOX-DANS-PANEL_455334.aspxBonjour je développe actuellement un application de carto Serialisation binaire dans un flux mémoire [ par renyone ] Salut, j'ai l'impression que quelquechose m'échappe et je sollicite donc votre aide.J'ai une méthode de sérialisation binaire dans un flux mémoire de probléme [ par sharu_a99 ] bonjour je travaille acutuellement sur un projet qui utilise le plugin de vlc,c'est une application en c# qui permet la diffusion de plusieurs flux vi Application flux vidéo en C# [ par sharu_a99 ] bonjourje devloppe actuellement une application web tv en c#,elle a pour role d'afficher un flux video en direct ,j'ai envisagé d'y integrer le mode p Simuler un flux de données. [ par renyone ] Salut à tous. Je vous expose ce que je veux faire : j'ai un certain nombre de données en base que je récupère via une certaine API. Une donnée est car [ C# -> BAR ] axvlc vista flux video [ par bbbbl ] Bonjour Je ne sais pas is je suis au bon endroit mais j'espere que qlq un pourra me repondre: Je n'arrive pas à faire fonctionner vlc ( flux)!!! J'ai


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.