Tôi đang phát triển một chương trình liên tục gửi luồng dữ liệu dưới nền và tôi muốn cho phép người dùng đặt giới hạn cho cả giới hạn tải lên và tải xuống.Điều chỉnh băng thông trong C#
Tôi đã đọc trên token bucket và leaky bucket alghorhithms, và dường như sau này có vẻ phù hợp với mô tả vì đây không phải là vấn đề tối đa hóa băng thông mạng mà là không phô trương càng tốt.
Tuy nhiên, tôi không chắc chắn về cách thực hiện điều này. Một cách tiếp cận tự nhiên là mở rộng lớp Stream trừu tượng để làm cho nó đơn giản hơn để mở rộng lưu lượng hiện có, nhưng điều này không đòi hỏi sự tham gia của các chuỗi phụ để gửi dữ liệu trong khi đồng thời nhận (thùng rò rỉ)? Bất kỳ gợi ý nào về các triển khai khác thực hiện tương tự sẽ được đánh giá cao.
Ngoài ra, mặc dù tôi có thể sửa đổi số lượng dữ liệu mà chương trình nhận được, việc điều chỉnh băng thông hoạt động như thế nào ở cấp C#? Liệu máy tính vẫn nhận được dữ liệu và chỉ đơn giản là lưu nó, có hiệu quả hủy bỏ hiệu ứng điều chỉnh hoặc nó sẽ đợi cho đến khi tôi yêu cầu để nhận được nhiều hơn?
CHỈNH SỬA: Tôi quan tâm đến việc điều chỉnh cả dữ liệu đến và đi, nơi tôi không có quyền kiểm soát đối với kết thúc ngược lại của luồng.
Nó sẽ trở nên chính xác hơn nếu bạn không đặt 'đã xử lý' thành' 0' khi bộ đếm thời gian được chọn, nhưng trừ 'maxBytesPerSecond' khỏi nó. –