Symulowanie Powolnego Połączenia Internetowego

Wiem, że to dziwne pytanie. Ponieważ zwykle tworzę aplikacje w oparciu o" założenie", że wszyscy użytkownicy mają wolne połączenie z Internetem. Ale czy ktoś uważa, że istnieje sposób na programową symulację powolnego połączenia internetowego, żebym mógł "zobaczyć" jak aplikacja działa przy różnych "prędkościach połączenia"?

Nie martwię się, który język jest używany. I nie szukam próbek kodu ani nic, po prostu interesuje mnie logika, która za tym stoi.

Author: Kara, 2010-08-21

13 answers

Jeśli używasz systemu windows, fiddler jest świetnym narzędziem. Posiada ustawienie symulujące prędkość modemu, a dla kogoś, kto chce więcej kontroli ma wtyczkę , aby dodać opóźnienie do każdego żądania.

Wolę używać takiego narzędzia do umieszczania kodu opóźnienia w mojej aplikacji, ponieważ jest to znacznie bardziej realistyczna symulacja, a także nie zmuszanie mnie do projektowania lub kodowania rzeczywistych bitów. Najlepszy kod to kod, którego nie muszę pisać.

Dodano : Ten artykuł u Pawła Donczewa blog o technologiach programistycznych pokazuje, jak tworzyć niestandardowe symulowane Prędkości: ograniczanie prędkości połączenia internetowego za pomocą Fiddler .

 101
Author: Philip Rieck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-18 09:26:34

Zaczynając od Chrome 38 możesz to zrobić bez żadnych wtyczek. Po prostu kliknij inspect element (lub F12 hotkey), a następnie kliknij "toggle device mod" Tutaj wpisz opis obrazka, a zobaczysz coś takiego:

Tutaj wpisz opis obrazka

Wśród wielu innych funkcji pozwala na symulację określonego połączenia internetowego (3G, GPRS)

P. S. dla osób, które próbują ograniczyć prędkość wysyłania. Niestety w chwili obecnej nie jest to możliwe.

P. S. 2 Teraz nie musisz włącz wszystko. Panel dławienia jest dostępny bezpośrednio z panelu sieci. Tutaj wpisz opis obrazka

Zauważ, że klikając na Brak dławienia możesz utworzyć własne opcje dławienia.

Tutaj wpisz opis obrazka

 145
Author: Salvador Dali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-15 10:38:23
 38
Author: Stin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-03 17:55:41

Używałem http://www.netlimiter.com / i działa bardzo dobrze. Nie tylko ograniczenie prędkości dla pojedynczych procesów, ale także pokazuje rzeczywiste szybkości transferu.

 11
Author: Piotr Müller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-26 14:44:53

Na maszynach Linuksowych można używać wondershaper

apt-get install wondershaper

$ sudo wondershaper {interface} {down} {up}

{dół} i {góra} są przepustowością w kpbs

Więc na przykład, jeśli chcesz ograniczyć przepustowość interfejsu eth1 do 256Kbps uplink i 128Kbps downlink,

$ sudo wondershaper eth1 256 128

Aby usunąć limit,

$ sudo wondershaper clear eth1 
 7
Author: Anonymous Platypus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-24 08:39:40

Istnieją proxy TCP, takie jak iprelay i Sloppy, które kształtują przepustowość, aby symulować powolne połączenia. Możesz również wykonać kształtowanie przepustowości i symulować utratę pakietów za pomocą narzędzi filtrujących IP, takich jak ipfw i iptables.

 6
Author: hobbs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-21 04:07:41

Możesz wypróbować Dummynet , może symulować kolejki i ograniczenia przepustowości, opóźnienia, straty pakietów i efekty wielościeżkowe

 4
Author: tszming,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-21 04:05:51

Ponadto, do symulacji powolnego połączenia na niektórych * nixach, możesz spróbować użyć ipfw . Więcej informacji udziela Ben Newman ' s answer on this Quora question

 4
Author: Ehtesh Choudhury,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-18 18:46:55

Użyj serwera proxy do debugowania sieci z funkcjami dławienia, takimi jak Charles lub Fiddler.

Znajdziesz je przydatne tworzenie stron internetowych w ogóle. Główną różnicą jest to, że Charles jest shareware, podczas gdy Fiddler jest wolny.

 3
Author: Ben M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-26 14:44:38

Użyj narzędzia takiego jak TCPMon . Może udawać powolne połączenie.

Zasadniczo, żądasz dokładnie tego samego żądania i po prostu przekazuje to samo żądanie do prawdziwego serwera, a następnie opóźnia odpowiedź tylko z ustawioną ilością bajtów.

 2
Author: pickypg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-26 14:45:33

[[0]} Mac OSX od 10.10 ma aplikację o nazwie Murus Firewall, która działa jako GUI do pf, zamiennik dla ipfw.

Działa bardzo dobrze dla dławienia całego systemu lub domeny. Byłem w stanie go użyć, aby przesunąć moją prędkość pobierania między 300kbps i 30Mbps, aby przetestować, jak odtwarzacz strumieniowy wideo dostosowuje.

 1
Author: Ben Wheeler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-28 22:07:12

Istnieje również inne narzędzie o nazwie WIPFW - http://wipfw.sourceforge.net/

To trochę stara szkoła, ale można go użyć do symulacji wolniejszego połączenia. Jest oparty na systemie Windows, a narzędzie pozwala administratorowi monitorować, ile ruchu Router otrzymuje z określonej maszyny lub ile ruchu WWW przesyła, na przykład.

 0
Author: Deano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-20 11:04:02

Możesz użyć NetEm (Emulacja sieci) jako serwera proxy do emulowania wielu cech sieci (prędkość, opóźnienie, utrata pakietów, itp.). Steruje on siecią za pomocą pakietu iproute2 i jest włączony w jądrze większości dystrybucji Linuksa.

Jest kontrolowany przez aplikację tc wiersza poleceń (z pakietu iproute2 ), ale istnieją również interfejsy graficzne dla NetEm, na przykład PHPnetemGUI2 .

The zaletą jest to, że, jak pisałem, może emulować nie tylko różne prędkości sieci, ale także na przykład utratę pakietów, duplikację i/lub uszkodzenie, losowe lub zdefiniowane opóźnienie itp., dzięki czemu można emulować różne słabo działające sieci.

Dla Twojej aplikacji jest to absolutnie przejrzyste, możesz skonfigurować system operacyjny tak, aby korzystał z serwera proxy NetEm, tak aby wszystkie połączenia z tej maszyny przebiegały przez NetEm. Lub możesz skonfigurować tylko aplikację, aby używała jej jako proxy.

Używałem go do testowania wydajności aplikacji na Androida w różnych emulowanych sieciach o niskiej wydajności.

 0
Author: Dawid Ferenczy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-05 20:08:32