【问题标题】:How to get current bandwidth (download) speed ?如何获得当前的带宽(下载)速度?
【发布时间】:2011-12-28 00:19:06
【问题描述】:

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

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

例如:下载速度:450 kbps

【问题讨论】:

  • 请不要将标签信息放在问题的标题中。它首先破坏了使用标签的目的,并使问题主题更长且更难阅读。此外,当您使用 Indy 之类的东西时,版本之间存在重大差异,如果您包含您正在使用的组件的版本,它会有所帮助。谢谢。

标签: delphi indy


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2012-05-17
    • 2015-11-22
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多