2010-08-20 31 views
5

Có ai có bất kỳ lời khuyên nào về cách tính mức sử dụng băng thông của ổ cắm không?Tính tốc độ băng thông của dữ liệu được gửi/nhận qua ổ cắm?

Ví dụ, khi tôi gửi dữ liệu qua ổ cắm đến máy chủ mà tôi đã kết nối, tôi muốn hiển thị Kb/s đang được gửi.

Tìm kiếm của Google không tiết lộ bất kỳ điều gì hữu ích. Có lẽ tôi đang tìm kiếm các từ sai.

+0

Bài viết này có thể cung cấp cho bạn một số ý tưởng: http://www.roseindia.net/javatutorials/counting_bytes_on_sockets.shtml – darri

Trả lời

5

Tốt nhất có thể bạn sẽ có thể dễ dàng làm là ghi lại khi bạn bắt đầu viết và sau đó đếm byte bạn đã gửi thành công đến phương thức Socket.getOutputStream.write(). Đối với một lượng nhỏ dữ liệu, điều đó sẽ rất không chính xác vì nó chỉ lấp đầy bộ đệm truyền của hệ điều hành mà ban đầu sẽ lấy byte nhanh hơn nhiều so với thực sự gửi chúng.

Tuy nhiên, nên phân bổ theo tỷ lệ chính xác với tỷ lệ chính xác trên một lượng dữ liệu khá lớn.

+0

Điều này sẽ làm việc theo lý thuyết, nhưng nó sẽ không cung cấp đại diện chính xác về tốc độ truyền tại hiện tại chốc lát. Ví dụ: Nếu tôi đã đăng nhập trong 5 phút ... đã dành 2,5 phút đầu tiên không làm gì và 2,5 phút cuối cùng gửi 100kb/s. Vào cuối của 5 phút nó sẽ cho tôi biết tốc độ là 50kb/s trung bình. Tôi không tìm kiếm tốc độ trung bình kể từ khi tôi bắt đầu truyền. Tôi đang tìm tốc độ hiện tại. Có lẽ trung bình của 5 giây cuối cùng sẽ hiệu quả, nhưng tôi không có ý định đi về việc ghi âm một cái gì đó như thế. –

+1

Gọi là trung bình di chuyển: http://en.wikipedia.org/wiki/Moving_average. Nó khá đơn giản để tính toán mặc dù có nhiều phương pháp khác nhau. Có thực sự không có điều như tính toán băng thông tại bất kỳ thời điểm nào; vì dữ liệu là rời rạc, bạn phải có trung bình. Một phương pháp cực kỳ đơn giản sẽ là 'trung bình = (trung bình + new_measurement_average)/2.0'. –

+2

Lưu ý: [CountingOutputStream] của ổi (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/CountingOutputStream.html) giúp bạn dễ dàng kết nối luồng đầu ra với luồng khác đếm số byte mà nó đã viết. –

Các vấn đề liên quan