objective-c - touch教程 - objective c版本




计算连接/下载速度 (3)

我有一个客户端和服务器程序(都在Obj-C),我正在使用这两个程序在两个设备之间传输文件。

转移工作正常,但我想向用户展示他们获得的传输速率。

所以我知道文件的总大小以及文件的传输量,有没有办法从这些信息中计算出传输速率,如果没有,我需要什么信息来计算传输速率?

谢谢


你需要知道

  1. 从开始发送字节(计算平均传输速率)

  2. 自上一秒以来发送的字节(计算当前传输速度)。

    如果您知道从头开始发送的字节,这可以很容易地完成。 (从头开始发送的新字节 - 从1秒前开始发送的字节)

  3. 文件总大小(计算进度的百分比)

    (字节转移/总字节数)


跟踪转移的时间。 传输速率只是传输字节/秒,即每秒字节数。 你不需要这个总大小。 (你也可以显示%完成,这是字节传输/总字节数* 100)


一旦你开始下载,捕获当前的系统时间并将其存储为“开始时间”。 然后,在转移过程中的任何一点计算转移速度所需要做的就是再次查看系统时间,并将其用作“当前时间”来计算到目前为止所花费的总时间:

transfer_speed = bytes_transferred / ( current_time - start_time)

你可能想用秒或毫秒的时间精度,当然可以乘以8,如果你想要位/秒。

既然你使用Cocoa,你可以使用NSDate类来获得时间戳。 例如,开始传输时使用以下内容:

NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];

然后使用以下方法定期检查传输速率:

double speed = bytesTransferred / ([NSDate timeIntervalSinceReferenceDate] - start);






cocoa