Come posso controllare la velocità del traffico (Byte inviata) in Java (JPCAP)
-
13-09-2020 - |
Domanda
Sto facendo un'applicazione di simulazione di rete nella mia classe.Ho già fatto l'intero codice, tuttavia ho avuto problemi a controllare la velocità del traffico inviato.
L'utente dell'app può inserire la velocità desiderata che desidera generare (ad esempio 10 Mib / s).Sto facendo questo controllo in qualche modo davvero schifoso.Ho creato un pacchetto UDP / TCP in Java che ha un byte specifico (ad esempio 8192 byte).Sapendo che ho fatto un thread che dura un secondo e continua a controllare se è già raggiunto il limite (in secondi o dimensioni) e continua a inviare fino a quando non ha raggiunto.Il seguente algoritmo spiega la mia idea schifosa.
sendWithLimit (byte limit, JpcapSender sender, Packet pkg) {
byte current = 0;
long timeStamp = System.currentTimeMillis();
while ((current < limit) && (System.currentTimeMillis() - timeStamp < 1000))
sender.send(pkg);
current += 8192;
}
}
.
i pensa che questo approccio è piuttosto povero, c'è un modo migliore per controllare questo ???
Soluzione
Allena il numero di pacchetti di 8192 byte puoi inviare al secondo entro la larghezza di banda raggiungibile.Invia che molti pacchetti (n) e dopo ognuno dorme per 1000 / n millisecondi.Avrai metterlo a sintonizzarlo per tenere conto del tempo effettivamente trascorso invio, ma ottieni l'idea generale.