如何使用 TIdTCPServer 或 TIdTCPClient 获取当前带宽速度?
我想知道,客户端从服务器下载数据的速度有多快?
例如:下载速度:450 kbps
最佳答案
将处理程序分配给连接的 OnWorkBegin
对象的 OnWork
、 OnWorkEnd
和 TIdTCPConnection
事件。 OnWorkBegin
事件有一个 AWorkCountMax
参数,它为您提供预期传输的总字节数(如果提前知道)。 OnWork
事件有一个 AWorkCount
参数,它为您提供自 OnWorkBegin
事件触发以来实际传输的字节总数。
每当触发 OnWork
事件时,从当前 AWorkCount
值中减去之前的 AWorkCount
值以确定两个事件之间传输了多少字节,然后将该值除以两个事件之间耗时量。使用该最终值,您可以根据需要计算 b/sec、kb/sec、mb/sec 等。
根据您发送/接收数据的准确程度,您可能需要手动调用 BeginWork()
的 EndWork()
和 TIdTCPConnection
方法来开始触发 OnWork...
事件。 Indy 的大多数读/写方法在内部不会调用 Begin/EndWork()
。