2011-12-28 55 views
6

如何使用IdTCPServer或IdTCPClient獲得當前的帶寬速度?如何獲得當前帶寬(下載)速度?

我想知道,客戶端從服務器下載數據的速度有多快?

例如爲:下載速度:450 kbps的

+3

請不要將標記信息放在問題的標題中。它首先打破了標籤的使用目的,並使問題的話題變得越來越難以閱讀。另外,如果您使用的是類似Indy的版本,則版本之間存在重大差異,如果您包含正在使用的組件版本,則會有所幫助。謝謝。 –

回答

9

分配處理程序的OnWorkBeginOnWork和連接的TIdTCPConnection對象的OnWorkEnd事件。 OnWorkBegin事件具有AWorkCountMax參數,該參數爲您提供正在傳輸的總預期字節(如果提前知道)。 OnWork事件有一個AWorkCount參數,該參數給出了自從OnWorkBegin事件觸發以來實際傳輸了多少字節的總數。

每當OnWork事件被觸發,減去當前AWorkCount值以前AWorkCount值來確定多少字節都被這兩個事件之間傳遞,然後由已經在兩者之間經過的時間量除以價值事件。有了這個最終值,您可以根據需要計算b/sec,kb/sec,mb/sec等。

取決於你究竟是如何發送/接收數據,您可能需要手動調用TIdTCPConnectionBeginWork()EndWork()方法來獲取OnWork...事件開始射擊。 Indy的大部分讀/寫方法都不會在內部調用Begin/EndWork()

相關問題