【发布时间】:2023-03-07 13:28:01
【问题描述】:
我正在尝试在我的应用中计算网络速度,因此我只能上传在这种网络条件下可以上传的数据量。为此,我的计划是:
- 我的应用程序的默认速度可能是 (500KB/s)。
- 我的应用将发送包含 500kb 数据的请求。
- 它将监控系统上传数据并获得响应所花费的往返时间。例如,应用在 5 秒内收到 200kb 数据,速度将是 (500+200)/5。
- 根据上面的例子,我的带宽是 140KB/s 的请求。
- 我将根据我的带宽计算指数移动平均值。
- 我将根据计算出的平均带宽发送下一个请求。
这是我对 NSURLSession 的实现:
//Initializing NSURLSession [one time only]
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.test.ios.background")
self.backgroundSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)
// Create session task:
var urlSessionTask = self.backgroundSession.uploadTaskWithRequest(request, fromFile: NSURL.fileURLWithPath(filePath!)) urlSessionTask.resume()
let requestStartTime = NSDate().timeIntervalSinceReferenceDate
//On didCompleteWithError calculating speed.
func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) {
let downloadEndTime = NSDate().timeIntervalSinceReferenceDate
let networkSpeed = Int(Double(sessionTask.receivedData.length + task.countOfBytesSent) / (downloadEndTime - requestStartTime))
}
如果我失去带宽,我可以使用这种方法找到它,因为我的平均带宽下降,但问题是一旦我达到低带宽并且我的网络条件得到改善,我的带宽将不会得到改善,因为我保持在请求中发送较少的数据,它会一直说带宽低。
如果我的网络状况有所改善,我可以发送更多数据吗?
我想到的一个解决方案是,我可以在每 10 个请求中发送最大数据(可能是 500KB),这样我就可以在网络条件得到改善的情况下获得更高的带宽。
【问题讨论】:
-
您如何上传数据。你在使用 nsurlsession 吗?你能写一些代码来理解击球手吗?
-
@CrazyDeveloper 我已经添加了相同的代码。是的,我正在使用
NSURLSession
标签: ios swift nsurlsession nsurlsessiontask