2011-12-28 12 views
6

Come ottenere velocità di banda corrente utilizzando IdTCPServer o IdTCPClient?Come ottenere la velocità corrente di banda (download)?

Voglio sapere quanto velocemente il client sta scaricando i dati dal server?

es .: velocità di scaricamento: 450 kbps

+3

Si prega di non inserire le informazioni tag nel titolo della tua domanda. Sconfigge lo scopo di avere tag in primo luogo e rende l'argomento delle domande più lungo e difficile da leggere. Inoltre, quando si utilizza qualcosa come Indy, dove ci sono grandi differenze tra le versioni, aiuta se si include quale versione dei componenti si sta utilizzando. Grazie. –

risposta

9

movimentatori Assegnare il OnWorkBegin, OnWork, e OnWorkEnd eventi TIdTCPConnection oggetto della connessione. L'evento OnWorkBegin ha un parametro AWorkCountMax che fornisce il totale dei byte attesi trasferiti (se noto in anticipo). L'evento OnWork ha un parametro AWorkCount che fornisce un totale parziale di quanti byte sono stati effettivamente trasferiti dall'esecuzione dell'evento OnWorkBegin.

Ogniqualvolta l'evento OnWork viene generato, sottrarre il valore precedente AWorkCount dal valore corrente AWorkCount per stabilire quanti byte sono stati trasferiti tra i due eventi, e quindi dividere tale valore per la quantità di tempo trascorso tra i due eventi. Con quel valore finale, puoi calcolare b/sec, kb/sec, mb/sec, ecc. Se necessario.

A seconda di come esattamente si sta inviando/ricevendo i dati, potrebbe essere necessario chiamare manualmente i BeginWork() e EndWork() metodi di TIdTCPConnection per ottenere i OnWork... eventi per cominciare a sparare. La maggior parte dei metodi di lettura/scrittura di Indy non chiama internamente Begin/EndWork().

Problemi correlati