如何获得当前带宽(下载)速度?

waz*_*123 7 delphi indy

如何使用IdTCPServer或IdTCPClient获得当前带宽速度?

我想知道,客户端从服务器下载数据的速度有多快?

例如:下载速度:450 kbps

Rem*_*eau 10

分配处理程序的OnWorkBegin,OnWorkOnWorkEnd连接的事件TIdTCPConnection对象.该OnWorkBegin事件有一个AWorkCountMax参数,可以为您提供转移的总预期字节数(如果提前知道).该OnWork事件有一个AWorkCount参数,可以为您提供自OnWorkBegin事件触发以来实际传输的字节数的运行总计.

每当OnWork触发事件时,AWorkCount从当前AWorkCount值中减去先前的值以确定在两个事件之间传输了多少字节,然后将该值除以两个事件之间经过的时间量.使用该最终值,您可以根据需要计算b/sec,kb/sec,mb/sec等.

根据您是如何准确地发送/接收数据,您可能需要手动调用BeginWork()EndWork()方法TIdTCPConnection来获得OnWork...事件开始射击.大多数Indy的读/写方法都不会在Begin/EndWork()内部调用.