Je sais que c'est une question étrange. Puisque je développe habituellement des applications basées sur "l'hypothèse" que tous les utilisateurs ont une connexion Internet lente. Mais, est-ce que quelqu'un pense qu'il existe un moyen de simuler par programmation une connexion Internet lente, afin que je puisse «voir» comment une application fonctionne à différentes «vitesses de connexion»?
Je ne m'inquiète pas de la langue utilisée. Et je ne cherche pas d'échantillons de code ou quoi que ce soit, juste intéressé par la logique derrière cela.
À partir de Chrome 38, vous pouvez le faire sans aucun plug-in. Cliquez simplement sur inspecter l'élément (ou le F12raccourci clavier), puis cliquez sur "basculer le module de périphérique" et vous verrez quelque chose comme ceci:
Parmi de nombreuses autres fonctionnalités, il vous permet de simuler une connexion Internet spécifique (3G, GPRS)
PS pour les personnes qui essaient de limiter la vitesse de téléchargement. Malheureusement, à l'heure actuelle, ce n'est pas possible.
PS2 maintenant, vous n'avez plus besoin de basculer quoi que ce soit. Le panneau de limitation est disponible directement depuis le panneau de réseau.
Notez qu'en cliquant sur Aucune limitation, vous pouvez créer vos options de limitation personnalisées.
la source
Google recommande :
la source
Sur les machines Linux, vous pouvez utiliser
wondershaper
les {down} et {up} sont la bande passante en kpbs
Par exemple, si vous souhaitez limiter la bande passante de l'interface eth1 à 256kbps en liaison montante et 128kbps en liaison descendante,
Pour effacer la limite,
la source
J'utilisais http://www.netlimiter.com/ et cela fonctionne très bien. Non seulement limiter la vitesse pour les processus uniques, mais affiche également les taux de transfert réels.
la source
Il existe des proxys TCP, comme iprelay et Sloppy, qui modifient la bande passante pour simuler des connexions lentes. Vous pouvez également faire la mise en forme de la bande passante et simuler la perte de paquets à l'aide d'outils de filtrage IP comme ipfw et iptables.
la source
Vous pouvez essayer Dummynet , il peut simuler les limitations de file d'attente et de bande passante, les retards, les pertes de paquets et les effets de trajets multiples
la source
Utilisez un proxy de débogage Web avec des fonctionnalités de limitation, telles que Charles ou Fiddler .
Vous les trouverez utiles pour le développement Web en général. La principale différence est que Charles est un shareware, alors que Fiddler est gratuit.
la source
De plus, pour simuler une connexion lente sur certains * nix, vous pouvez essayer d'utiliser ipfw . Plus d'informations sont fournies par la réponse de Ben Newman à cette question Quora
la source
Utilisez un outil comme TCPMon . Cela peut simuler une connexion lente.
Fondamentalement, vous lui demandez exactement la même chose et il transmet simplement exactement la même demande au serveur réel, puis retarde la réponse avec uniquement le nombre d'octets défini.
la source
Vous pouvez utiliser NetEm (Network Emulation) comme serveur proxy pour émuler de nombreuses caractéristiques du réseau (vitesse, délai, perte de paquets, etc.). Il contrôle la mise en réseau à l'aide du package iproute2 et est activé dans le noyau de la plupart des distributions Linux.
Il est contrôlé par l'
tc
application de ligne de commande (à partir du package iproute2 ), mais il existe également des interfaces graphiques pour NetEm, par exemple PHPnetemGUI2 .L'avantage est que, comme je l'ai écrit, il peut émuler non seulement différentes vitesses de réseau, mais aussi, par exemple, la perte de paquets, la duplication et / ou la corruption, le retard aléatoire ou défini, etc., afin que vous puissiez émuler divers réseaux peu performants.
Pour votre application, c'est absolument transparent, vous pouvez configurer le système d'exploitation pour utiliser le serveur proxy NetEm, de sorte que toutes les connexions de cette machine passeront par NetEm. Ou vous pouvez configurer uniquement votre application pour l'utiliser comme proxy.
Je l'ai utilisé pour tester les performances d'une application Android sur divers réseaux émulés à faible performance.
la source
Mac OSX depuis 10.10 a une application appelée Murus Firewall , qui agit comme une interface graphique pour pf, le remplacement d'ipfw.
Cela fonctionne très bien pour la limitation à l'échelle du système ou spécifique au domaine. J'ai juste pu l'utiliser pour faire glisser ma vitesse de téléchargement entre 300 Kbps et 30 Mbps pour tester comment un lecteur vidéo en streaming s'ajuste.
la source
Il existe également un autre outil appelé WIPFW - http://wipfw.sourceforge.net/
C'est un peu old school, mais vous pouvez l'utiliser pour simuler une connexion plus lente. Il est basé sur Windows et l'outil permet à l'administrateur de surveiller la quantité de trafic que le routeur reçoit d'une certaine machine, ou la quantité de trafic WWW qu'il transfère, par exemple.
la source
Mettre à jour ceci (9 ans après que cela a été demandé) car la réponse que je cherchais n'était pas mentionnée:
Firefox a également des préréglages pour limiter les vitesses de connexion. Trouvez-les dans l' onglet Moniteur réseau des outils de développement. La valeur par défaut est «Pas de limitation».
Le plus lent est le GPRS ( vitesse de téléchargement: 50 Kbps, vitesse de téléchargement: 20 Kbps, latence minimale (ms): 500 ), allant de 2G `` bon '' et `` normal '', 3G et 4G vers DSL et WiFi ( vitesse de téléchargement: 30 Mbps, téléchargement vitesse: 15Mbps, Latence minimum (ms): 2 ).
Plus d'informations dans la documentation des outils de développement .
la source
Pour Linux, la liste d'articles suivante peut être utile:
Personnellement, bien que Dummynet soit bon, je trouve que NetEm est le plus polyvalent pour mes cas d'utilisation; Je suis généralement intéressé par l'effet des retards, plutôt que par la bande passante (c'est-à-dire les problèmes de connexion WiFi), et il est très facile d'émuler la perte / corruption de paquets aléatoires, etc. Il est également très accessible et gratuit (contrairement au Linktropy basé sur le matériel ).
En passant, pour Windows, Clumsy est génial. Je voudrais également ajouter que (concernant les sites Web) la limitation du navigateur n'est pas une méthode précise pour émuler des problèmes de réseau réels (je pense que "TKK" a commenté quelques-unes des raisons ci-dessus).
J'espère que cela aide quelqu'un!
la source
Un cas courant de mise en forme d'une seule connexion TCP peut en fait être assemblé à partir de paires doubles de
socat
etcpipe
à la mode UNIX comme ceci:socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
Cela simule une connexion avec une bande passante d'environ 300 Ko / s de votre service à
:5000
et à environ 10 Ko / s et écoute sur:5555
les connexions entrantes. Attention : notez que cela par connexion , donc chaque connexion TCP individuelle obtient ce montant.Explication: L'extérieur (à gauche)
socat
écoute avec les options données en:5555
tant que serveur de forking. La premièrecpipe
commande de l'SYSTEM:...
option limite alors les données qui sont entrées dans le socket: 5555 (et sortent de la première, externesocat
) à au plus 10 ko / s. Ces données sont ensuite transférées en utilisant un autresocat
qui se connectelocalhost:5000
(où le service que vous souhaitez ralentir devrait écouter). Les données delocalhost:5000
sont ensuite placées dans la bonnecpipe
commande, qui (avec les valeurs données) les limite à environ 300 Ko / s.L'option
-ngr
decpipe
est importante. Cela oblige cpipe à lire de manière non avide à partir de son descripteur de fichier d'entrée. Sinon, vous risquez de rester bloqué avec des données dans les tampons qui ne sont pas transférées et qui attendent une réponse.Utiliser l'
buffer
outil le plus courant au lieu decpipe
est probablement également possible.(Crédits: Ceci est basé sur la recette "double-tee" de Christophe Loor de la
socat
documentation)la source