2010-09-30 8 views
1

J'ai une classe qui utilise des sockets pour envoyer et recevoir des données de manière asynchrone sur le réseau:C# prises .net taux de téléchargement

class Client 
{ 
    private Socket mSocket; 
    /* 
    ... 
    */ 
    public void SendPacket(byte[] data) 
    { 
     mSocket.BeginSend(data, 0, data.Length, SocketFlags.None, OnSent, null); 
    } 

    private void OnSent(IAsyncResult ar) 
    { 
     mSocket.EndSend(ar); 
    } 
} 

Ma question est, comment puis-je calculer le taux de téléchargement, alors que les données sont envoyé? Est-ce que .Net a un moyen d'indiquer le taux de téléchargement/téléchargement sur une socket spécifique?

J'utilise C# 4.0

+0

Il n'existe pas de méthode intégrée permettant de le déterminer. Mesurer le temps nécessaire pour télécharger ou télécharger certaines données est trivial. La partie délicate consiste à maintenir le taux de téléchargement/téléchargement à jour lorsque la connexion est bloquée. – dtb

+0

J'ai besoin de surveillance en temps réel pour les taux de montée/descente. Mesurer le temps nécessaire à l'opération n'est pas très utile pour moi. – Bobos

Répondre

0

Il est le travail du système d'exploitation pour fournir ce genre d'information. Lancez Perfmon.exe, sélectionnez Analyseur de performances. Cliquez avec le bouton droit sur la zone de graphique et cliquez sur Ajouter des compteurs. Regardez dans la section "Interface réseau". Les octets envoyés/s vous donnent un bon indicateur de taux. Ou bande passante actuelle.

Ceci est également disponible à partir de C#, utilisez la classe PerformanceCounter. La sélection de la bonne interface réseau peut être un problème, gardez à l'esprit que l'information est disponible à portée de main avec le moniteur de performance. L'utilisateur n'est généralement intéressé que dans quelle mesure le téléchargement a progressé, il y a très peu à faire pour le rendre plus rapide. Simple ProgressBar fera très bien ce travail.

+0

Merci pour la réponse. Je vais jeter un oeil à la classe PerformanceCounter. Juste pour mentionner, c'est "perfmon.exe". – Bobos

+0

OK, j'ai constaté que la classe fournit des taux de down/up globaux sur un AppDomain (et pas sur chaque socket dans le AppDoman). Ce n'est pas ce dont j'ai vraiment besoin. Donc, je vais juste montrer une barre de progression, comme votre conseil. Merci de votre aide! – Bobos