Làm cách nào để hạn chế / điều chỉnh tốc độ dữ liệu WiFi trên thiết bị Android của tôi?


9

Tôi đang thử nghiệm một ứng dụng Android và cần hiểu ứng dụng này hoạt động như thế nào trên các tốc độ internet khác nhau. Một ví dụ về trường hợp thử nghiệm là: 1. đặt băng thông tối đa thành 20kb / giây và kiểm tra xem nó hoạt động như thế nào; 2. đặt băng thông tối đa thành 50kb / giây và kiểm tra xem nó hoạt động như thế nào ... vv

Vấn đề là - tôi không biết làm thế nào để hạn chế lưu lượng.

Tôi đang sử dụng WiFi và Charles Proxy . Tôi sử dụng Charles để kiểm tra ứng dụng phản ứng như thế nào. Thật không may, tôi không thể điều tiết bằng Charles - vì một số lý do giới hạn Charles hoàn toàn không ảnh hưởng đến ứng dụng của tôi.

Dù sao, ai đó có thể giúp tôi với vấn đề này? Bạn có ý tưởng nào về cách giới hạn băng thông không?

Cảm ơn trước.


Âm thanh như bạn sẽ tốt hơn khi sử dụng một proxy khác hỗ trợ điều chỉnh.
GAThrawn

Câu trả lời:


8

CHO THIẾT BỊ ROOTED (được sao chép từ câu trả lời của Mansour trên bài đăng này )

Thanh toán BradyBound . Đây là một máy ép / giới hạn tốc độ tải xuống toàn hệ thống. Vài điều cần lưu ý:

  • Ứng dụng này yêu cầu quyền truy cập root.
  • Nó hoạt động bằng cách thả các gói bằng cách sử dụng iptables. Điều này gây lãng phí một số lưu lượng truy cập - bao nhiêu tùy thuộc vào loại lưu lượng truy cập (ví dụ: tải xuống chạy dài, duyệt web).
  • Đo tốc độ được thực hiện theo số lượng gói thay vì byte nên giới hạn tốc độ sẽ không chính xác.
  • Điều này chỉ giới hạn lưu lượng TCP (không có nghĩa là bỏ các gói UDP).

Cũng lưu ý rằng tôi là tác giả của ứng dụng này.

Chỉnh sửa số 1:

Giải trình:

Dữ liệu được chia thành các phần nhỏ gọi là Gói sẽ được truyền qua mạng.

Nó có thể được truyền bằng TCP (Giao thức điều khiển truyền) hoặc UDP (Giao thức gói dữ liệu người dùng)

Hãy lấy một ví dụ:

Giả sử bạn là máy chủ và tôi là máy chủ lưu trữ và tôi muốn tải xuống một tệp, vì vậy trước tiên tôi sẽ gửi cho bạn một yêu cầu cho nó, sau đó bạn sẽ xử lý và thay vì gửi toàn bộ tệp, bạn sẽ chia tệp lớn trong Gói nhỏ.

Bây giờ mỗi gói đã được tạo sẽ chứa thông tin như IP nguồn (của bạn) và IP đích (của tôi), cùng với một số dữ liệu bổ sung (chuỗi số, kích thước dữ liệu, thời gian tồn tại, v.v.)

Bạn sẽ gửi những gói đó và họ có thể liên lạc với tôi qua bộ định tuyến. Không nhất thiết là tất cả các gói phải đến với tôi qua cùng một tuyến đường. Họ có thể đến với tôi thông qua các tuyến đường có sẵn khác nhau.

Khi họ liên lạc với tôi, TCP / UDP xuất hiện.

Nếu bạn đã sử dụng TCP để truyền, khi một gói đến tay tôi, một xác nhận cho biết rằng gói đến tôi được gửi lại cho bạn.

Tính năng này thiếu UDP. Nếu bạn đã sử dụng UDP, không giống như TCP, nó sẽ không gửi xác nhận cho bạn. Điều đó có nghĩa là bạn, với tư cách là một máy chủ, không biết liệu các gói có đến được với tôi hay không. Trong trường hợp nó bị mất trong truyền, nó bị mất mãi mãi.

Thả gói

Bỏ gói có nghĩa là loại bỏ các gói. Vì vậy, về cơ bản, khi tôi sẽ thả gói tin do bạn gửi, một xác nhận sẽ được gửi cho bạn (trong trường hợp TCP) rằng gói bị mất khi truyền, do đó bạn sẽ phải gửi lại.

Theo cách này, nó lãng phí lưu lượng và giới hạn tốc độ cùng lúc tôi nhận được toàn bộ tệp.

Nếu tôi sẽ bỏ các gói UDP, tôi sẽ không nhận được toàn bộ tệp. Đó là lý do ứng dụng không kiểm soát lưu lượng UDP.

Và vâng, đặc quyền root là bắt buộc, vì iptable chỉ có thể được truy cập với quyền truy cập superuser.


Có thể giới hạn tốc độ tải xuống một mình không tải lên?
rakki s

Có vẻ khó kiểm soát Chỉ tải xuống Tốc độ ... nhưng tôi sẽ cố gắng cập nhật câu trả lời ngay khi tôi tìm được cách thực hiện.
Ash-Ishh ..

Có phải là hoàn toàn không thể làm cho ứng dụng hoạt động trên các thiết bị không root? bạn nói rằng việc bỏ các gói sử dụng iptables gây lãng phí một số lưu lượng truy cập, ý nghĩa của việc lãng phí là gì? Tôi biết giới hạn tốc độ sẽ không chính xác nhưng tôi vẫn cần nó khá chính xác, giả sử độ lệch 10%. Ý bạn là gì khi "điều này chỉ giới hạn lưu lượng TCP (không phải gói UDP)"?, xin lỗi tôi không biết TCP và UDP là gì.
rakki s

0

Nếu bạn đang sử dụng mac os x, bạn có thể sử dụng "Điều hòa liên kết mạng".

Bạn có thể cài đặt nó trong xcode từ:

Xcode> Mở Công cụ dành cho nhà phát triển> Công cụ dành cho nhà phát triển khác

Nó sẽ mở một trang web nguồn từ apple (bạn có thể cần phải đăng nhập). Trong danh sách tài nguyên, tìm kiếm "Công cụ IO phần cứng" mới nhất và tải xuống. Sau đó cài đặt "Điều hòa liên kết mạng", nó sẽ thêm một tùy chọn trong ngăn tùy chọn mac của bạn.

Ý tưởng là để có được mac của bạn trên ethernet. Chia sẻ kết nối của nó trên wifi. Hạn chế lưu lượng với Điều kiện liên kết mạng. Và kết nối Android của bạn trên wifi mac của bạn.

chỉnh sửa: có vẻ như squid-cache hỗ trợ điều chỉnh mạng. http://www.tldp.org/HOWTO/Bandference-Limiting-HOWTO/index.html


0

Bạn có thể kiểm soát băng thông bằng bộ định tuyến của mình (nếu nó hỗ trợ nó).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.