2011-12-28 36 views
6

Làm cách nào để có được tốc độ băng thông hiện tại bằng IdTCPServer hoặc IdTCPClient?Làm cách nào để có được tốc độ băng thông (tải xuống) hiện tại?

Tôi muốn biết, khách hàng đang tải xuống dữ liệu từ máy chủ nhanh như thế nào?

ví dụ .: Tải tốc độ: 450 kbps

+3

Vui lòng không đặt thông tin thẻ vào tiêu đề câu hỏi của bạn. Nó đánh bại mục đích của việc có thẻ ở nơi đầu tiên, và làm cho chủ đề câu hỏi dài hơn và khó đọc hơn. Ngoài ra, khi bạn đang sử dụng một cái gì đó như Indy, nơi có sự khác biệt lớn giữa các phiên bản, nó sẽ giúp nếu bạn bao gồm phiên bản của các thành phần bạn đang sử dụng. Cảm ơn. –

Trả lời

9

xử lý Gán cho OnWorkBegin, OnWork, và OnWorkEnd sự kiện của đối tượng TIdTCPConnection của kết nối. Sự kiện OnWorkBegin có thông số AWorkCountMax cung cấp cho bạn tổng số byte dự kiến ​​sẽ được chuyển (nếu biết trước thời hạn). Sự kiện OnWork có thông số AWorkCount cung cấp cho bạn tổng số hoạt động thực sự được chuyển bao nhiêu byte kể từ khi sự kiện OnWorkBegin được kích hoạt.

Bất cứ khi nào sự kiện OnWork được kích hoạt, trừ giá trị AWorkCount trước đó khỏi giá trị hiện tại AWorkCount để xác định số byte đã được chuyển giữa hai sự kiện và sau đó chia giá trị đó cho khoảng thời gian đã trôi qua giữa hai sự kiện sự kiện. Với giá trị cuối cùng đó, bạn có thể tính b/sec, kb/giây, mb/giây, v.v. nếu cần.

Tùy thuộc vào chính xác cách thức bạn đang gửi/nhận dữ liệu của bạn, bạn có thể phải tự gọi các phương pháp BeginWork()EndWork() của TIdTCPConnection để có được những OnWork... sự kiện để bắt đầu bắn. Hầu hết các phương pháp đọc/ghi của Indy không gọi Begin/EndWork() nội bộ.

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