Pregunta

Estoy haciendo una aplicación de simulación de red en mi clase.Ya hice todo el Código, sin embargo, me estoy volviendo a controlar la velocidad del tráfico enviado.

El usuario de la aplicación puede ingresar la velocidad deseada que quiere generar (por ejemplo, 10 MIB / S).Estoy haciendo este control de alguna manera realmente de mierda.Hice un paquete UDP / TCP en Java que tiene bytes específicos (por ejemplo, 8192 bytes).Sabiendo esto, hice un hilo que duró un segundo segundo y sigue registrando si ya ha alcanzado su límite (en segundos o tamaño) y sigue enviando hasta que haya alcanzado.El siguiente algoritmo explica mi idea de mierda.

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 Piensa que este enfoque es bastante pobre, ¿hay una mejor manera de controlar esto ???

¿Fue útil?

Solución

Hace ejercicio de cuántos paquetes de 8192 bytes puede enviar por segundo dentro del ancho de banda alcanzable.Envíe que muchos paquetes (n), y después de cada uno, duerma por milisegundos de 1000 / n.Tendrá que ajustarlo para afinarlo para tener en cuenta el tiempo realmente gastado enviando, pero obtiene la idea general.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top