El problema con dormir una cantidad constante de 1 segundo después de cada transferencia es que tendrá un rendimiento de red entrecortado.
Sea BandwidthMaxThreshold el umbral de ancho de banda deseado.
Deje TransferRate ser la velocidad de transferencia actual de la conexión.
Entonces ...
Si detecta su TRANSFERRATE> BandwidthMaxThreshold entonces hacer una T. inact = 1 + T. inact * (tiempo de aumento del sueño en un 2%) 1,02
Antes o después de cada operación de la red hacer una Dormir (SleepTime)
Si detecta que TransferRate es mucho más bajo que BandwidthMaxThreshold, puede disminuir su SleepTime. Alternativamente, usted podría simplemente disminuir/disminuir su SleepTime con el tiempo siempre. Finalmente, su SleepTime alcanzará 0 nuevamente.
En lugar de un aumento del 2%, también podría hacer un aumento en una cantidad mayor linealmente de la diferencia entre TransferRate - BandwidthMaxThreshold.
Esta solución es buena, porque no tendrá sueño si la red del usuario ya no es tan alta como le gustaría.
Establezca el tamaño del búfer de recepción del zócalo al producto de retardo de ancho de banda deseado. – EJP