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