Estoy probando una aplicación de Android y necesito entender cómo se comporta la aplicación en diferentes velocidades de Internet. Un ejemplo de caso de prueba es: 1. establecer el ancho de banda máximo a 20 kbps y verificar cómo funciona; 2. establezca el ancho de banda máximo a 50 kbps y compruebe cómo funciona ... etc.
El problema es que no tengo idea de cómo limitar el tráfico.
Estoy usando WiFi y Charles Proxy . Uso a Charles para verificar cómo reacciona la aplicación. Desafortunadamente, no puedo limitar el uso de Charles; por alguna razón, los límites de Charles no afectan mi aplicación en absoluto.
De todos modos, ¿alguien puede ayudarme con este problema? ¿Tienes alguna idea sobre cómo limitar el ancho de banda?
Gracias por adelantado.
Respuestas:
PARA DISPOSITIVO ENRAIZADO (copiado de la respuesta de Mansour en esta publicación )
Editar # 1:
Explicación:
Los datos se dividen en pequeñas partes llamadas paquetes que se transmiten a través de la red.
Se puede transmitir utilizando TCP (Protocolo de control de transmisión) o UDP (Protocolo de datagramas de usuario)
Tomemos un ejemplo:
Supongamos que usted es el servidor y yo soy el anfitrión y quiero descargar un archivo, así que primero le enviaré una solicitud, luego de lo cual procesará, y en lugar de enviar el archivo completo, dividirá el archivo grande en Pequeños paquetes.
Ahora cada paquete que se ha creado contendrá información como la IP de origen (la suya) y la IP de destino (la mía), junto con algunos datos adicionales (número de secuencia, tamaño de los datos, tiempo de vida, etc.)
Enviarás esos paquetes y pueden comunicarse conmigo a través de enrutadores. No es necesario que todos los paquetes me lleguen por la misma ruta. Pueden venir a mí a través de diferentes rutas disponibles.
Cuando me alcanzan, TCP / UDP aparece en la imagen.
Si ha utilizado TCP para la transmisión, cuando me llega un paquete, se le envía un acuse de recibo que indica que me llegó el paquete.
Esta característica carece de UDP. Si ha utilizado UDP, a diferencia de TCP, no le enviará acuses de recibo. Eso significa que usted, como servidor, no tiene idea de si los paquetes me llegan o no. En caso de que se pierda en la transmisión, se pierde para siempre.
Dejar caer paquetes
Descartar paquetes significa descartar paquetes. Básicamente, cuando descarte el paquete enviado por usted, se le enviará un acuse de recibo (en el caso de TCP) de que el paquete se perdió en la transmisión, por lo que deberá enviarlo nuevamente.
De esta manera, desperdicia el tráfico y limita la velocidad al mismo tiempo que obtengo el archivo completo.
Si descarto los paquetes UDP, no recibiré el archivo completo. Esa es la razón por la cual la aplicación no controla el tráfico UDP.
Y sí, el privilegio de root es obligatorio, ya que solo se puede acceder a iptable con acceso de superusuario.
fuente
Si está bajo Mac OS X, puede usar "Network Link Conditioner".
Puede instalarlo en xcode desde:
Xcode> Open Developer Tool> Más herramientas de desarrollador
Se abrirá una página web de recursos de Apple (es posible que deba iniciar sesión). En la lista de recursos, busque la última "Hardware IO Tools" y descárguela. Luego instale "Network Link Conditioner", agregará una opción en su panel de preferencias de mac.
La idea es tener tu Mac en Ethernet. Comparte su conexión por wifi. Limite el tráfico con Network Link Conditionner. Y conecta tu Android en tu Mac wifi.
editar: parece que la aceleración de la red de soporte de caché de calamar. http://www.tldp.org/HOWTO/Bandwidth-Limiting-HOWTO/index.html
fuente
Puede controlar el ancho de banda con su enrutador (si lo admite).
fuente