2010-06-17 26 views
5

Ho scritto un'app che sincronizza le cartelle locali con le cartelle online, ma mangia tutta la mia larghezza di banda, come posso limitare la quantità di larghezza di banda utilizzata dall'app? (Programatically)?Velocità limite larghezza di banda

+0

Con quale frequenza controllate gli aggiornamenti? E quanto spesso * devi * controllare? Ridurre l'intervallo di aggiornamento probabilmente aiuterà molto. –

+4

Domanda duplicata. Vedi -> http://stackoverflow.com/questions/847422/how-to-programatically-limit-bandwidth-usage-of-my-c-windows-forms-application –

risposta

2

Date un'occhiata a http://www.codeproject.com/KB/IP/MyDownloader.aspx

Sta usando la tecnica ben nota che si trova in Downloader.Extension \ SpeedLimit

In sostanza, davanti a più dati vengono letti di un torrente, un controllo viene eseguito su come molti dati sono stati letti dalla precedente iterazione. Se tale velocità supera la velocità massima, il comando di lettura viene sospeso per un tempo molto breve e il controllo viene ripetuto. La maggior parte delle applicazioni usa questa tecnica.

0

Direi "no". A meno che tu non stia facendo qualcosa di veramente sbagliato, il tuo programma non dovrebbe essere in difficoltà con la larghezza di banda. Il router dovrebbe bilanciare la larghezza di banda disponibile tra tutte le richieste.

vi consiglio di effettuare le seguenti operazioni:

a) Creare hash MD5 per tutti i file. Confronta hash e/o date e dimensioni per i file e sincronizza solo i file che sono stati modificati. A meno che non si sincronizzino file di grandi dimensioni, non è necessario sincronizzare molti dati.

b) Limitare la velocità di invio. Nel thread di caricamento leggere i file in blocchi da 1 a 8 KB e quindi chiamare Thread.Sleep dopo ogni blocco per limitare la velocità. Devi farlo sul lato upload, tuttavia.

c) Convogliare tutto attraverso un flusso Gzip. (System.IO.Compression) Per i file di testo questo può ridurre la dimensione dei dati che devono essere trasferiti.

Spero che questo aiuti!

+0

grazie ... i tuoi commenti sulla compressione e sulla frequenza di invio sarà sicuramente utile anche. le mie cartelle possono contenere fino a 30 gig ... e il limite deve essere impostato sull'app stessa. "Paladino rifatto" mi ha indirizzato nella giusta direzione per la velocità di impostazione programmatica. –

Problemi correlati