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

时间:2011-12-28 00:19:06

标签: delphi indy

如何使用TIdTCPServer或TIdTCPClient获得当前带宽速度?

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

例如:下载速度:450 kbps

1 个答案:

答案 0 :(得分:9)

将处理程序分配给连接的OnWorkBegin对象的OnWorkOnWorkEndTIdTCPConnection事件。 OnWorkBegin事件具有AWorkCountMax参数,该参数为您提供要传输的总预期字节数(如果提前知道)。 OnWork事件具有AWorkCount参数,该参数为您提供自OnWorkBegin事件被触发以来实际传输了多少字节的运行总计。

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

根据您发送/接收数据的具体情况,您可能需要手动调用BeginWork()的{​​{1}}和EndWork()方法才能获得TIdTCPConnection个活动开始射击。 Indy的大多数读/写方法都不会在内部调用OnWork...