如何使用 TIdTCPServer 或 TIdTCPClient 获取当前带宽速度?
我想知道,客户端从服务器下载数据的速度有多快?
例如:下载速度:450 kbps

最佳答案

将处理程序分配给连接的 OnWorkBegin 对象的 OnWorkOnWorkEndTIdTCPConnection 事件。 OnWorkBegin 事件有一个 AWorkCountMax 参数,它为您提供预期传输的总字节数(如果提前知道)。 OnWork 事件有一个 AWorkCount 参数,它为您提供自 OnWorkBegin 事件触发以来实际传输的字节总数。

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

根据您发送/接收数据的准确程度,您可能需要手动调用 BeginWork()EndWork()TIdTCPConnection 方法来开始触发 OnWork... 事件。 Indy 的大多数读/写方法在内部不会调用 Begin/EndWork()

10-08 15:54