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


9

Je teste une application Android et j'ai besoin de comprendre comment l'application se comporte à différentes vitesses Internet. Un exemple de scénario de test est le suivant: 1. définissez la bande passante maximale à 20 kbit / s et vérifiez son fonctionnement; 2. définissez la bande passante maximale à 50 kbps et vérifiez comment cela fonctionne ... etc.

Le problème est - 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 parviens pas à accélérer en utilisant Charles - pour une raison quelconque, les limites Charles n'affectent pas du tout mon application.

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

Merci d'avance.


Il semble que vous feriez mieux d'utiliser un autre proxy qui prend en charge la limitation.
GAThrawn

Réponses:


8

POUR L'APPAREIL ENRACINÉ (copié de la réponse de Mansour sur ce post )

Commander BradyBound . C'est un shaper / limiteur de vitesse de téléchargement à l'échelle du système. Peu de choses à noter:

  • L'application nécessite un accès root.
  • Il fonctionne en supprimant les paquets à l'aide de iptables. Cela gaspille un peu de trafic - combien dépend du type de trafic (par exemple, téléchargement à long terme, navigation sur le Web).
  • La mesure du débit est effectuée par le nombre de paquets au lieu d'octets, de sorte que la limite de vitesse ne sera pas précise.
  • Cela limite uniquement le trafic TCP (cela n'a aucun sens de supprimer les paquets UDP).

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

Édition n ° 1:

Explication:

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

Il peut être transmis via TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol)

Prenons un exemple:

Supposons que vous soyez le serveur et que je suis l'hôte et que je souhaite télécharger un fichier, donc je vais d'abord vous envoyer une demande pour cela, après quoi vous traiterez, et au lieu d'envoyer le fichier entier, vous diviserez le gros fichier en petits paquets.

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

Vous enverrez ces paquets et ils pourront me joindre via des routeurs. Il n'est pas nécessaire que tous les paquets me parviennent par le même chemin. Ils peuvent me rejoindre via différents itinéraires disponibles.

Quand ils m'atteignent, TCP / UDP entre en image.

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

Cette fonctionnalité fait défaut dans 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. En cas de perte de transmission, elle est perdue pour toujours.

Suppression de paquets

La suppression de paquets signifie la suppression des paquets. Donc, fondamentalement, lorsque je laisserai tomber le paquet que vous avez envoyé, un accusé de réception vous sera envoyé (dans le cas de TCP) que le paquet a été perdu lors de la transmission, vous devrez donc le renvoyer.

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

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 un must, car iptable est accessible uniquement avec un accès superutilisateur.


Est-il possible de limiter à lui seul la vitesse de téléchargement et non le téléchargement?
rakki s

Il semble difficile de contrôler la vitesse de téléchargement uniquement ... mais j'essaierai de mettre à jour la réponse dès que je trouverai un moyen de le faire.
Ash-Ishh ..

Est-il complètement impossible de faire fonctionner l'application également sur des appareils non rootés? vous avez dit que la suppression de paquets à l'aide d'iptables gaspille du trafic, que voulez-vous dire par déchets? Je sais que la limite de vitesse ne sera pas exactement précise, mais j'en ai toujours besoin pour être assez précise, disons 10% d'écart. que voulez-vous dire par "cela ne limite que le trafic TCP (pas les paquets UDP)"?, désolé, je ne sais pas ce que sont TCP et UDP.
2015 de rakki à 8h52

0

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

Vous pouvez l'installer dans xcode à partir de:

Xcode> Open Developer Tool> Autres outils de développement

Il ouvrira une page Web de ressources d'Apple (vous devrez peut-être vous connecter). Dans la liste des ressources, recherchez les derniers "Hardware IO Tools" et téléchargez-les. Ensuite, installez "Network Link Conditioner", il ajoutera une option dans votre panneau de préférences mac.

L'idée est d'obtenir votre Mac sur Ethernet. Partagez sa connexion sur wifi. Limitez le trafic avec Network Link Conditionner. Et connectez votre Android sur votre mac wifi.

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


0

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.