Bagaimana cara membatasi / membatasi kecepatan data WiFi di perangkat Android saya?

9

Saya menguji aplikasi Android dan perlu memahami bagaimana aplikasi berperilaku pada kecepatan internet yang berbeda. Contoh kasus uji adalah: 1. mengatur bandwidth maksimum menjadi 20 kbps dan memeriksa cara kerjanya; 2. atur bandwidth maksimum menjadi 50kbps dan periksa cara kerjanya ... dll.

Masalahnya adalah - Saya tidak tahu bagaimana membatasi lalu lintas.

Saya menggunakan WiFi dan Proxy Charles . Saya menggunakan Charles untuk memeriksa bagaimana aplikasi bereaksi. Sayangnya, saya tidak dapat melakukan pembatasan menggunakan Charles - karena alasan tertentu batas Charles tidak mempengaruhi aplikasi saya sama sekali.

Bagaimanapun, bisakah seseorang membantu saya dengan masalah ini? Apakah Anda punya ide tentang cara membatasi bandwidth?

Terima kasih sebelumnya.

Maks
sumber
Kedengarannya Anda akan lebih baik menggunakan proxy yang berbeda yang mendukung pelambatan.
GAT Diambil

Jawaban:

8

UNTUK PERANGKAT ROOTED (disalin dari jawaban Mansour di pos ini )

Periksa BradyBound . Ini adalah pembentuk / pembatas kecepatan unduhan lebar sistem. Beberapa hal yang perlu diperhatikan:

  • Aplikasi ini membutuhkan akses root.
  • Ini bekerja dengan menjatuhkan paket menggunakan iptables. Ini memboroskan beberapa lalu lintas - seberapa besar tergantung pada jenis lalu lintas (mis. Unduhan yang berjalan lama, penelusuran web).
  • Pengukuran laju dilakukan dengan jumlah paket bukan byte sehingga batas kecepatan tidak akan akurat.
  • Ini hanya membatasi lalu lintas TCP (tidak masuk akal untuk menjatuhkan paket UDP).

Perhatikan juga bahwa saya penulis aplikasi ini.

Edit # 1:

Penjelasan:

Data dibagi menjadi bagian-bagian kecil yang disebut Paket yang akan dikirim melintasi jaringan.

Itu dapat ditransmisikan menggunakan TCP (Transmission Control Protocol) atau UDP (User Datagram Protocol)

Mari kita ambil contoh:

Misalkan Anda adalah server dan saya adalah tuan rumahnya dan saya ingin mengunduh file, jadi pertama-tama saya akan mengirimkan permintaan kepadanya, setelah itu Anda akan memproses, dan alih-alih mengirim seluruh file, Anda akan membagi file besar dalam paket kecil.

Sekarang setiap paket yang telah dibuat akan berisi informasi seperti IP sumber (milik Anda) dan IP tujuan (milikku), bersama dengan beberapa data tambahan (urutan no., Ukuran data, waktu untuk hidup, dll.)

Anda akan mengirim paket-paket itu dan mereka dapat menghubungi saya melalui router. Tidak perlu bahwa semua paket harus datang kepada saya melalui rute yang sama. Mereka dapat datang kepada saya melalui berbagai rute yang tersedia.

Ketika mereka mencapai saya, TCP / UDP muncul dalam gambar.

Jika Anda telah menggunakan TCP untuk transmisi, ketika sebuah paket mencapai saya, sebuah pernyataan yang menyatakan bahwa paket tersebut mencapai saya dikirim kembali kepada Anda.

Fitur ini kurang dalam UDP. Jika Anda telah menggunakan UDP, tidak seperti TCP, itu tidak mengirimkan ucapan terima kasih kepada Anda. Itu berarti Anda, sebagai server, tidak tahu apakah paket menjangkau saya atau tidak. Jika hilang dalam transmisi, hilang selamanya.

Menjatuhkan Paket

Menjatuhkan paket berarti membuang paket. Jadi pada dasarnya, ketika saya akan menjatuhkan paket yang dikirim oleh Anda, pemberitahuan akan dikirimkan kepada Anda (dalam kasus TCP) bahwa paket tersebut hilang dalam transmisi, jadi Anda harus mengirimnya lagi.

Dengan cara ini, itu membuang-buang lalu lintas dan membatasi kecepatan pada saat yang sama saya mendapatkan seluruh file.

Jika saya akan menjatuhkan paket UDP, saya tidak akan menerima seluruh file. Itulah alasan mengapa aplikasi tidak mengontrol lalu lintas UDP.

Dan ya, hak akses root adalah suatu keharusan, karena iptable dapat diakses dengan akses superuser saja.

Ash-Ishh ..
sumber
Apakah mungkin membatasi kecepatan unduhan saja bukan mengunggah?
rakki s
Tampaknya sulit untuk mengendalikan Kecepatan Mengunduh saja ... tetapi saya akan mencoba memperbarui jawaban segera setelah saya akan menemukan cara untuk melakukannya.
Ash-Ishh ..
Apakah benar-benar mustahil untuk membuat aplikasi berfungsi juga di perangkat yang tidak di-rooting? Anda mengatakan bahwa menjatuhkan paket menggunakan iptables menghabiskan beberapa lalu lintas, apa yang Anda maksud dengan limbah? Saya tahu batas kecepatan tidak akan persis akurat tetapi saya masih membutuhkannya agar cukup akurat, katakanlah deviasi 10%. apa yang Anda maksud dengan "ini hanya membatasi lalu lintas TCP (bukan paket UDP)", maaf saya tidak tahu apa itu TCP dan UDP.
rakki s
0

Jika Anda berada di bawah mac os x Anda dapat menggunakan "Network Link Conditioner".

Anda dapat menginstalnya di xcode dari:

Xcode> Buka Alat Pengembang> Alat Pengembang Lainnya

Ini akan membuka halaman web sumber daya dari apple (Anda mungkin perlu masuk). Di daftar sumber daya, cari "Alat IO Perangkat Keras" terbaru dan unduh. Kemudian instal "Network Link Conditioner", itu akan menambahkan opsi di panel preferensi mac Anda.

Idenya adalah untuk mendapatkan mac Anda di ethernet. Bagikan koneksinya pada wifi. Batasi lalu lintas dengan Network Link Conditionner. Dan hubungkan android Anda di wifi mac Anda.

sunting: tampaknya pelambatan jaringan squid-cache mendukung. http://www.tldp.org/HOWTO/Bandwidth-Limiting-HOWTO/index.html

HiroKenshin
sumber
0

Anda dapat mengontrol bandwidth dengan router Anda (jika mendukungnya).


sumber