【问题标题】:Internet speed detection in swift快速检测网速
【发布时间】:2017-10-04 06:03:37
【问题描述】:

我正在尝试使用 NSURLConnection 检测我的互联网速度。我所做的是,我开始下载一个文件,在 NSURLConnection 的代表中,我开始一个时间,然后当下载完成时,它会获取时间范围以及接收到的数据,然后我计算得到 mb/sec 使用下面的代码。

        if (startTime != nil) {

        elapsed = NSDate().timeIntervalSinceDate(startTime)
         NSLog("\(length) -- \(elapsed)")
        var d =  (Double(length) / elapsed)
        var result = CGFloat( d/1024)
        result = result * 0.0078125
        result = result * 0.0009765625
        return result

    }

我的问题是为什么我在这里划分 1024,因为如果我不这样做,我会得到一些比特/字节......

我假设我从 NSDate().timeIntervalSinceDate(startTime) 获得秒数,从 Nsdata 长度获得字节数

我认为我得到了正确的价值,但我不确定。让我知道为什么需要除以 1024!

【问题讨论】:

  • 我标记的另一件事是,当我测试时,它在模拟器中显示正确的结果,但是在原始设备中,它显示的更少!!
  • 顺便说一句,该示例使用了 NSURLConnection,现在已弃用。请改用NSURLSession。在回答您关于timeIntervalSinceDate 的问题时,它返回一个NSTimeInterval,以秒为单位。

标签: ios networking nsurlconnection nsdata nstimeinterval


【解决方案1】:

我在the example 中将其除以 1024,只是因为我认为查看每秒字节数会产生一个太大而无法理解的数字(并且考虑到其中的可变性,这表明准确度具有误导性数字)。

除以 1024,得到每秒千字节。要获得每秒兆字节数,您需要除以 1024 * 1024。原始代码示例中的 1024 是一个错误,因为这会产生每秒千字节数。

所以,使用任何你想要的度量。每秒字节数、每秒千字节数、每秒兆字节数。或者您可以将每秒兆字节数乘以 8 得到每秒兆字节数(另一种常见的速度度量)。只需将每秒字节数除以适当的因子即可。

【讨论】:

  • 感谢您的帮助!!!我想我已经完成了。我必须使用 NSURLSession 而不是 NSURLConnection 吗?当我获取数据时
  • @Saty - NSURLConnection 在 iOS 9 中已被正式弃用,因此虽然您在技术上可以使用它,但这并不是一个好主意。你不应该使用NSURLConnection,除非你绝对需要(例如,你试图支持早于NSURLSession的iOS版本,即iOS 6或更早版本)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多