Determining the network bandwidth of an idle network

I am creating an application that will move some potentially large files, but I want to do this without disrupting the user's network connection, inducing it. I know that Windows BITS has such functionality and, in fact, what I want to reproduce (as far as throttling goes). I know that BITS has other functions that don't interest me, and I also have the ability to consume it with .NET, but I'm interested in how it works.

I looked online and I couldn’t find a clear explanation of exactly how BITS determines how much bandwidth to consume, except for the vague “BITS polling” to observe the decrease in bandwidth used by other programs. "What does this mean? The bandwidth consumed by other programs can decrease for a number of other reasons - can BITS tell the difference? If I were looking for a process that replicated this" stay under the radar, where the user does not notice the transfer functionality ", as if I did it?

The UPDATE . There are currently a number of programs, primarily automatic backup programs, such as Mozy. They will only use the available background bandwidth without slowing down other applications. Perhaps they just continue to increase the transfer rate that they are trying to, until the actual transfer rate stops increasing, and then it drops by 10% or something like that. I am wondering if someone tried something like this.

+3
source share

Source: https://habr.com/ru/post/1748857/


All Articles