Bonjour, je suis en train de développer une application de mesure de qualité de service internet, donc je cherche à écrire un petit programme qui calcule le débit de ma connexion!
Si quelqu'un sait comment faire, ou a déjà écrit un tel programme merci d'avance
j'ai essayé d'utiliser se code mais les résultats que je me tiens restent toujours "0.0" est ce que vous pouvez m'aider pour trouver une solution
merci
public DataMonitor() {
samples = new Vector();
epoch = new Date();
}
// Add a sample with a start and finish time.
public void addSample(long bcount, Date ts, Date tf) {
samples.addElement(new DataSample(bcount, ts, tf));
}
// Get the data rate of a given sample.
public float getRateFor(int sidx) {
float rate = (float) 0.0;
int scnt = samples.size();
if (scnt > sidx && sidx >= 0) {
DataSample s = (DataSample) samples.elementAt(sidx);
Date start = s.start;
Date end = s.end;
if (start == null && sidx >= 1) {
DataSample prev = (DataSample) samples.elementAt(sidx - 1);
start = prev.end;
}
if (start != null && end != null) {
long msec = end.getTime() - start.getTime();
rate = 1000 * (float)s.byteCount / (float)msec;
}
}
return rate;
}
// Get the rate of the last sample
public float getLastRate() {
int scnt = samples.size();
return getRateFor(scnt - 1);
}
// Get the average rate over all samples.
public float getAverageRate() {
long msCount = 0;
long byteCount = 0;
Date start;
Date finish;
int scnt = samples.size();
for (int i = 0; i < scnt; i++) {
DataSample ds = (DataSample)samples.elementAt(i);
if (ds.start != null)
start = ds.start;
else if (i > 0) {
DataSample prev = (DataSample)samples.elementAt(i-1);
start = ds.end;
}
else
start = epoch;
if (ds.end != null)
finish = ds.end;
else if (i < scnt - 1) {
DataSample next = (DataSample)samples.elementAt(i+1);
finish = ds.start;
}
else
finish = new Date();
// Only include this sample if we could figure out a start
// and finish time for it.
if (start != null && finish != null) {
byteCount += ds.byteCount;
msCount += finish.getTime() - start.getTime();
}
}
float rate = -1;
if (msCount > 0) {
rate = 1000 * (float)byteCount / (float)msCount;
}
System.out.println(rate);
return rate;
}
public static void main (String []args){
DataMonitor d =new DataMonitor();
System.out.println(d.getLastRate());
}
}
Pour le coup, tu peux ajouter toutes les classes que tu veux, mais si avant l'appel de la méthode getLastRate tu n'ajoutes pas de sample (voir méthode addSample), le résultat sera TOUJOURS le même.
merci
import java.util.Vector;
import java.util.Date;
import java.util.Enumeration;
/**
*
public class DataMonitor {
protected Vector samples;
protected Date epoch;
public DataMonitor() {
samples = new Vector();
epoch = new Date();
}
// Add a sample with a start and finish time.
public void addSample(long bcount, Date ts, Date tf) {
samples.addElement(new DataSample(bcount, ts, tf));
}
// Get the data rate of a given sample.
public float getRateFor(int sidx) {
float rate = (float) 0.0;
int scnt = samples.size();
if (scnt > sidx && sidx >= 0) {
DataSample s = (DataSample) samples.elementAt(sidx);
Date start = s.start;
Date end = s.end;
if (start == null && sidx >= 1) {
DataSample prev = (DataSample) samples.elementAt(sidx - 1);
start = prev.end;
}
if (start != null && end != null) {
long msec = end.getTime() - start.getTime();
rate = 1000 * (float)s.byteCount / (float)msec;
}
}
return rate;
}
// Get the rate of the last sample
public float getLastRate() {
int scnt = samples.size();
return getRateFor(scnt - 1);
}
// Get the average rate over all samples.
public float getAverageRate() {
long msCount = 0;
long byteCount = 0;
Date start;
Date finish;
int scnt = samples.size();
for (int i = 0; i < scnt; i++) {
DataSample ds = (DataSample)samples.elementAt(i);
if (ds.start != null)
start = ds.start;
else if (i > 0) {
DataSample prev = (DataSample)samples.elementAt(i-1);
start = ds.end;
}
else
start = epoch;
if (ds.end != null)
finish = ds.end;
else if (i < scnt - 1) {
DataSample next = (DataSample)samples.elementAt(i+1);
finish = ds.start;
}
else
finish = new Date();
// Only include this sample if we could figure out a start
// and finish time for it.
if (start != null && finish != null) {
byteCount += ds.byteCount;
msCount += finish.getTime() - start.getTime();
}
}
float rate = -1;
if (msCount > 0) {
rate = 1000 * (float)byteCount / (float)msCount;
}
System.out.println(rate);
return rate;
}
public static void main (String []args){
DataMonitor d =new DataMonitor();
System.out.println(d.getLastRate());
}
}
Si tu utilises le code que tu as posté c'est normale... tu n'y ajoutes pas de samples...
Pour le coup, tu peux ajouter toutes les classes que tu veux, mais si avant l'appel de la méthode getLastRate tu n'ajoutes pas de sample (voir méthode addSample), le résultat sera TOUJOURS le même.