10 votes

Comment limiter/réduire la vitesse des données WiFi sur mon appareil Android ?

Je teste une application Android et j'ai besoin de comprendre comment l'application se comporte en fonction de la vitesse de l'Internet. Voici un exemple de scénario de test : 1. fixer la bande passante maximale à 20kbps et vérifier comment cela fonctionne ; 2. fixer la largeur de bande maximale à 50 kbps et vérifier comment cela fonctionne... etc.

Le problème est que je ne sais pas comment limiter le trafic.

J'utilise le WiFi et Charles Proxy . J'utilise Charles pour vérifier comment l'application réagit. Malheureusement, je ne suis pas en mesure d'étrangler en utilisant Charles - pour une raison quelconque, les limites de Charles n'affectent pas du tout mon application.

Quoi qu'il en soit, quelqu'un peut-il m'aider à résoudre ce problème ? Avez-vous des idées sur la façon de limiter la bande passante ?

Merci d'avance.

9voto

Ash-Ishh.. Points 1040

POUR UN APPAREIL ENRACINÉ (copié de La réponse de Mansour à ce message )

Checkout BradyBound . Il s'agit d'un système de réduction/limitation de la vitesse de téléchargement. Quelques points à noter :

  • L'application nécessite un accès Root.
  • Il fonctionne en éliminant les paquets en utilisant iptables . Cela entraîne un gaspillage de trafic, dont l'ampleur dépend du type de trafic (par exemple, téléchargement de longue durée, navigation sur Internet).
  • La mesure du débit se fait par le nombre de paquets au lieu d'octets, la limite de vitesse ne sera donc pas précise.
  • Cela ne limite que le trafic TCP (cela n'a aucun sens de laisser tomber les paquets UDP).

Notez également que je suis l'auteur de cette application.

Edit #1 :

Explication :

Les données sont divisées en petites parties appelées Paquets à transmettre sur le réseau.

Il peut être transmis en utilisant TCP (Transmission Control Protocol) o UDP (User Datagram Protocol)

Prenons un exemple :

Supposons que vous êtes le serveur, que je suis l'hôte et que je veux télécharger un fichier. Je vous enverrai d'abord une demande, que vous traiterez ensuite, et au lieu d'envoyer le fichier entier, vous diviserez le gros fichier en petits paquets.

Maintenant, chaque paquet créé contiendra des informations telles que l'adresse IP source (la vôtre) et l'adresse IP destination (la mienne), ainsi que des données supplémentaires (numéro de séquence, taille des données, temps de vie, etc.).

Vous enverrez ces paquets et ils pourront me parvenir via routeurs. Il n'est pas nécessaire que tous les paquets me parviennent par la même route. Ils peuvent m'arriver par différentes routes disponibles.

Quand ils m'atteignent, TCP/UDP entre en scène.

Si vous avez utilisé le protocole TCP pour la transmission, lorsqu'un paquet me parvient, un accusé de réception indiquant que le paquet m'a atteint vous est renvoyé.

Cette fonctionnalité fait défaut à l'UDP. Si vous avez utilisé UDP, contrairement à TCP, il ne vous envoie pas d'accusé de réception. Cela signifie que vous, en tant que serveur, n'avez aucune idée si les paquets me parviennent ou non. S'il est perdu en cours de transmission, il est perdu à jamais.

Abandon de paquets

L'abandon des paquets signifie le rejet des paquets. Ainsi, lorsque j'abandonne le paquet que vous avez envoyé, un accusé de réception vous est envoyé (dans le cas du protocole TCP) pour vous informer que le paquet a été perdu lors de la transmission et que vous devez le renvoyer.

De cette façon, il gaspille du trafic et limite la vitesse en même temps que j'obtiens le fichier entier.

Si je laisse tomber les paquets UDP, je ne recevrai pas le fichier entier. C'est la raison pour laquelle l'application ne contrôle pas le trafic UDP.

Et oui, le privilège Root est indispensable, car iptable n'est accessible qu'avec un accès superutilisateur.

0voto

HiroKenshin Points 1

Si vous êtes sous mac os x, vous pouvez utiliser "Network Link Conditioner".

Vous pouvez l'installer dans xcode à partir de :

Xcode > Ouvrir l'outil du développeur > Autres outils du développeur

Cela ouvrira une page Web de ressources d'Apple (vous devrez peut-être vous connecter). Dans la liste des ressources, recherchez la dernière version de "Hardware IO Tools" et téléchargez-la. Puis installez "Network Link Conditioner", cela ajoutera une option dans le panneau de préférences de votre Mac.

L'idée est de mettre votre mac sur ethernet. Partager sa connexion en wifi. Limiter le trafic avec Network Link Conditionner. Et connectez votre Android sur votre mac en wifi.

edit : il semble que squid-cache supporte la limitation du réseau. http://www.tldp.org/HOWTO/Bandwidth-Limiting-HOWTO/index.html

0voto

Vous pouvez contrôler la largeur de bande avec votre routeur (s'il le prend en charge).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X