delphi - 如何获取当前带宽(下载)速度?

标签 delphi indy

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

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

例如:下载速度:450 kbps

最佳答案

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

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

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

关于delphi - 如何获取当前带宽(下载)速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650632/

相关文章:

Delphi JSON 解析器

c++ - Delphi 中 C++ 引用参数的等价物是什么?

delphi - 如何比较枚举类型集

c++ - 服务器和客户端之间建立了连接,但无法通过 J2ME 中的 OutputStream 发送数据

delphi - 使用 DELPHI 和 INDY 10 组件转发和回复电子邮件

delphi - 如何在任意类型上调用 GetEnumerator?

delphi - cxGrid 仅限大写字母

delphi - VirtualTreeView 使用线程添加根

delphi - 如何使用 TIdTelnet 发送命令?

delphi - 使用 TAmazonStorageService.UploadObject 当 Content-type 为 'text/*' 时出现 SignatureDoesNotMatch 错误