2010-06-17 27 views
5

escribí una aplicación que sincroniza carpetas locales con carpetas en línea, pero se come todo mi ancho de banda, ¿cómo puedo limitar la cantidad de ancho de banda que usa la aplicación? (programáticamente)?Limite velocidades de ancho de banda

+0

¿Con qué frecuencia busca actualizaciones? ¿Y con qué frecuencia * necesita * verificar? Disminuir el intervalo de actualización probablemente ayude mucho. –

+4

Pregunta duplicada. Consulte -> http://stackoverflow.com/questions/847422/how-to-programatically-limit-bandwidth-usage-of-my-c-windows-forms-application –

Respuesta

2

Tome un vistazo a http://www.codeproject.com/KB/IP/MyDownloader.aspx

Está usando la técnica bien conocida que se puede encontrar en Downloader.Extension \ SpeedLimit

Básicamente, antes de que más datos se leen de una corriente, se realiza una comprobación sobre cómo muchos datos han sido leídos desde la iteración anterior. Si esa tasa excede la tasa máxima, entonces el comando de lectura se suspende por un tiempo muy corto y la verificación se repite. La mayoría de las aplicaciones usan esta técnica.

0

Yo diría "no". A menos que esté haciendo algo realmente incorrecto, su programa no debería estar acaparando ancho de banda. Su enrutador debe estar equilibrando el ancho de banda disponible entre todas las solicitudes.

te recomiendo que hagas lo siguiente:

a) Crear hash MD5 para todos los archivos. Compare hashes y/o fechas y tamaños para los archivos y solo sincronice los archivos que han cambiado. A menos que esté sincronizando archivos masivos, no debería tener que sincronizar una gran cantidad de datos.

b) Limite la velocidad de envío. En su hilo de carga, lea los archivos en segmentos de 1-8 KB y luego llame a Thread.Sleep después de cada fragmento para limitar la velocidad. Sin embargo, tienes que hacer esto en el lado de la carga.

c) Transmitir todo a través de un flujo de Gzip. (System.IO.Compression) Para archivos de texto, esto puede reducir el tamaño de los datos que se deben transferir.

Espero que esto ayude!

+0

thanx ... sus comentarios de compresión y envío Definitivamente será útil también. mis carpetas pueden tener hasta 30 gigas ... y el límite debe establecerse en la aplicación en sí. El "Paladín Refractado" me indicó la dirección correcta para establecer la tasa programática. –

Cuestiones relacionadas