Wiem, że to dziwne pytanie. Ponieważ zwykle tworzę aplikacje na podstawie „założenia”, że wszyscy użytkownicy mają wolne połączenie z Internetem. Ale czy ktoś uważa, że istnieje sposób na programową symulację wolnego połączenia internetowego, dzięki czemu mogę „zobaczyć”, jak aplikacja działa przy różnych „prędkościach połączenia”?
Nie martwię się o to, który język jest używany. I nie szukam próbek kodu ani nic, po prostu interesuje mnie logika.
źródło
Począwszy od Chrome 38 możesz to zrobić bez żadnych wtyczek. Po prostu kliknij sprawdź element (lub F12skrót), a następnie kliknij „przełącz mod urządzenia”, a zobaczysz coś takiego:
Wśród wielu innych funkcji pozwala symulować określone połączenie internetowe (3G, GPRS)
PS dla osób, które próbują ograniczyć prędkość wysyłania. Niestety w chwili obecnej nie jest to możliwe.
PS2 teraz nie musisz nic przełączać. Panel dławienia jest dostępny bezpośrednio z panelu sieci.
Pamiętaj, że klikając opcję Bez ograniczania można utworzyć niestandardowe opcje ograniczania.
źródło
Google zaleca :
źródło
Na maszynach z systemem Linux możesz używać
wondershaper
{down} i {up} są przepustowością w kpbs
Na przykład jeśli chcesz ograniczyć przepustowość interfejsu eth1 do łącza w górę 256 kb / s i łącza w dół 128 kb / s,
Aby usunąć limit,
źródło
Korzystałem z http://www.netlimiter.com/ i działa bardzo dobrze. Nie tylko ogranicza prędkość dla pojedynczych procesów, ale także pokazuje rzeczywiste prędkości transferu.
źródło
Istnieją serwery proxy TCP, takie jak iprelay i Sloppy, które kształtują szerokość pasma, aby symulować wolne połączenia. Możesz także kształtować szerokość pasma i symulować utratę pakietów za pomocą narzędzi do filtrowania adresów IP, takich jak ipfw i iptables.
źródło
Możesz wypróbować Dummynet , który może symulować ograniczenia kolejek i przepustowości, opóźnienia, straty pakietów i efekty wielościeżkowe
źródło
Użyj internetowego serwera proxy do debugowania z funkcjami dławienia, takimi jak Charles lub Fiddler .
Znajdziesz je ogólnie przydatne do tworzenia stron internetowych. Główną różnicą jest to, że Charles jest oprogramowaniem shareware, podczas gdy Fiddler jest bezpłatny.
źródło
Ponadto, aby zasymulować wolne połączenie na niektórych * nixach, możesz spróbować użyć ipfw . Więcej informacji znajduje się w odpowiedzi Bena Newmana na to pytanie Quora
źródło
Użyj narzędzia takiego jak TCPMon . Może sfałszować wolne połączenie.
Zasadniczo żądasz dokładnie tego samego i przekazuje dokładnie to samo żądanie do prawdziwego serwera, a następnie opóźnia odpowiedź tylko o ustawioną liczbę bajtów.
źródło
Możesz użyć NetEm (emulacji sieci) jako serwera proxy do emulacji wielu charakterystyk sieci (prędkość, opóźnienie, utrata pakietów itp.). Kontroluje sieć 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ż GUI interfejsu sieciowego dla NetEm, na przykład PHPnetemGUI2 .Zaletą jest to, że, jak napisał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 określone opóźnienie itp., Dzięki czemu możesz emulować różne słabo działające sieci.
W przypadku Twojej aplikacji jest to całkowicie przezroczyste, możesz skonfigurować system operacyjny do korzystania z serwera proxy NetEm, aby wszystkie połączenia z tego komputera przechodziły przez NetEm. Możesz też skonfigurować tylko aplikację, aby używała jej jako serwera proxy.
Używam go do testowania wydajności aplikacji na Androida w różnych emulowanych sieciach o niskiej wydajności.
źródło
Mac OSX od 10.10 ma aplikację o nazwie Murus Firewall , która działa jako GUI dla pf, zastępując ipfw.
Działa bardzo dobrze do ograniczania przepustowości w całym systemie lub w domenie. Po prostu mogłem go użyć, aby przesunąć prędkość pobierania między 300 Kb / s a 30 Mb / s, aby sprawdzić, jak dostosowuje się odtwarzacz wideo strumieniowego.
źródło
Istnieje również inne narzędzie o nazwie WIPFW - http://wipfw.sourceforge.net/
To trochę stara szkoła, ale możesz jej użyć do symulacji wolniejszego połączenia. Jest oparty na systemie Windows, a narzędzie pozwala administratorowi monitorować, na przykład, jaki ruch router otrzymuje z określonej maszyny lub jaki ruch WWW przesyła na przykład.
źródło
Aktualizacja tego (9 lat po zapytaniu), ponieważ nie znalazłem odpowiedzi, której szukałem:
Firefox ma również wstępne ustawienia ograniczania prędkości połączenia. Znajdź je na karcie Monitor sieci narzędzi programistycznych. Domyślnie jest to „Brak ograniczania”.
Najwolniejszy jest GPRS ( prędkość pobierania: 50 Kb / s, prędkość wysyłania: 20 Kb / s, minimalne opóźnienie (ms): 500 ), od „dobrych” i „zwykłych” 2G, 3G i 4G do DSL i WiFi ( prędkość pobierania: 30 Mb / s, przesyłanie prędkość: 15 Mb / s, minimalne opóźnienie (ms): 2 ).
Więcej w dokumentach Dev Tools .
źródło
W systemie Linux przydatna może być następująca lista dokumentów:
Osobiście, chociaż Dummynet jest dobry, uważam, że NetEm jest najbardziej wszechstronny w moich przypadkach użycia; Zazwyczaj interesuję się efektem opóźnień, a nie przepustowością (tj. Problemami z połączeniem Wi-Fi), i bardzo łatwo jest emulować przypadkową utratę / uszkodzenie pakietu itp. Jest również bardzo dostępny i darmowy (w przeciwieństwie do sprzętowej Linktropy ).
Na marginesie, dla Windows Clumsy jest niesamowity. Chciałbym również dodać, że (w odniesieniu do stron internetowych) ograniczanie przeglądarki nie jest dokładną metodą emulacji rzeczywistych problemów z siecią (myślę, że „TKK” skomentował kilka powodów, dla których powyżej).
Mam nadzieję, że to komuś pomoże!
źródło
Jedna wspólna sprawa kształtowania jednego połączenia TCP może być rzeczywiście montowane z dwoma parami
socat
icpipe
UNIX sposób jak poniżej:socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
To symuluje połączenie z przepustowości około 300 KB / s ze swojej służby na
:5000
i do około 10kB / s, a Słuchacze dotyczące:5555
połączeń przychodzących. Zastrzeżenie : Należy pamiętać, że to za-gra , więc każdego połączenia TCP pobiera tę kwotę.Objaśnienie: Zewnętrzny (lewy)
socat
nasłuchuje z podanymi opcjami:5555
jako serwer rozwidlający. Pierwszecpipe
polecenie wSYSTEM:...
opcji ogranicza następnie dane, które trafiły do gniazda: 5555 (i wychodzą z pierwszego zewnętrznegosocat
) do maksymalnie 10 kB / s. Te dane są następnie przekazywane za pomocą innego,socat
który łączy sięlocalhost:5000
(w którym usługa, którą chcesz zwolnić, powinna nasłuchiwać). Dane zlocalhost:5000
są następnie umieszczane po prawej stroniecpipe
polecenia, które (przy podanych wartościach) dławi je do około 300 kB / s.Opcja
-ngr
docpipe
to ważne. Powoduje, że cpipe odczytuje niepotrzebnie odczyt z deskryptora pliku wejściowego. W przeciwnym razie możesz utknąć z danymi w buforach, które nie są przekazywane i czekają na odpowiedź.Korzystanie z bardziej popularnego
buffer
narzędzia zamiastcpipe
Możliwe jest również .(Kredyty: Jest to oparte na przepisie „podwójnej koszulki” autorstwa Christophe Loor z
socat
dokumentacji)źródło