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 ???

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top