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

Entrée/Sortie Java Discussion :

[Réseau]calcul débit download


Sujet :

Entrée/Sortie Java

  1. #1
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut [Réseau]calcul débit download
    Bonjour,

    au cours du téléchargement de données, je souhaite récupérer le débit de download. J'ai essayé le code suivant qui me renvoie un débit égal à l'infini !! , je ne vois pas pourquoi ?!



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Calendar d=Calendar.getInstance();
           long date1=0;
                        while (readCount != -1) { 
                            debitdownload=String.valueOf((float)(readCount)/(float)(d.getTimeInMillis()-date1));
                            fos.write(buff, 0, readCount); 
                            date1=d.getTimeInMillis();
                            readCount = webStream.read(buff);
                        }
    [/list]

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Probablement parce que le nombre d'octet lu entre les deux moment est infiniment plus grand que la difference de temps entre les deux moment et si tu divisais le nombre d'octet lu par 1millions ,tu aurais le debit en Mo ?
    Qu'en penses tu ?

  3. #3
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Et pourquoi pas afficher les différentes valeurs que tu utilises pour faire ton calcul ?

    Tu verras ce qui fais que ton resultat est a l'infini, remarque c'est sympa pour le download !?

    Perso je pense pour le int readCount qui depasse la capacité du int, je le metterai en long et meme en unsigned long pour etre sur que ca ne vienne pas de ce point.

  4. #4
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    Citation Envoyé par Scorpyosis
    Et pourquoi pas afficher les différentes valeurs que tu utilises pour faire ton calcul ?

    Tu verras ce qui fais que ton resultat est a l'infini, remarque c'est sympa pour le download !?

    Perso je pense pour le int readCount qui depasse la capacité du int, je le metterai en long et meme en unsigned long pour etre sur que ca ne vienne pas de ce point.
    Tu as raison pour le type long, faut que je le change... bien qu'il n'y ait aucun risque pour ce bout de code puisque mon buffer et de 10 kb.

    Mais je viens de trouver, le problème vient de Il me renvoie toujours la même chose dans cette boucle, donc on divise toujours par 0 !
    La classe Calendar ne fonctionne pas top (peut-être que je l'utilise mal. Mais j'ai vu sur le web que la classe System possède une méthode similaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.currentTimeMillis();
    et là ça marche !!

    Merci !

  5. #5
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    petite précision, j'obtiens encore quelques fois des "infinity", le nombre de bit lus dans une boucle peut être tout petit donc le temps qui s'écoule est très faible, d'où l'erreur.
    Je conseille donc de procéder autrement que le code précédent, en choisissant un intervale de temps (de 10ms à qq secondes) et en déterminant le nombre de bytes lus pendant ce temps, d'où le débit :
    debit=donneeslues/intervalle de temps

    c mieux.

  6. #6
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut Re: calcul débit download
    Citation Envoyé par FFF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Calendar d=Calendar.getInstance();
    long date1=0;
    while (readCount != -1) {
      debitdownload=String.valueOf((float)(readCount)/(float)(d.getTimeInMillis()-date1));
    (...)
    }
    (...)

    Mais je viens de trouver, le problème vient de
    Il me renvoie toujours la même chose dans cette boucle, donc on divise toujours par 0 !
    La classe Calendar ne fonctionne pas top (peut-être que je l'utilise mal.
    Ca ne vient pas de la classe Calendar ! C'est simplement que tu intialises un Calendar en dehors de la boucle while, et ensuite, tu demandes le timeInMillis de ce Calendar => forcément, ça retourne toujours la même valeur !
    Il aurait fallu que tu fasse le Calendar d=Calendar.getInstance(); comme 1ere instruction de ton while.

  7. #7
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Je te conseille l'utiliser la méthode System.getcurrentTimeMillis() qui retourne le temps actuel en millisecondes.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/06/2013, 22h09
  2. Calcul débit applicatif d'un réseau
    Par Merlo dans le forum Développement
    Réponses: 2
    Dernier message: 09/01/2013, 08h48
  3. Web Service calcul débit à distance
    Par mehdi.cheddani dans le forum Services Web
    Réponses: 0
    Dernier message: 30/11/2012, 14h48
  4. Calcule débit utile
    Par oussa_7 dans le forum Développement
    Réponses: 0
    Dernier message: 24/01/2012, 13h33
  5. Calculer débit internet
    Par ferrero dans le forum Applets
    Réponses: 0
    Dernier message: 08/08/2008, 17h18

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