Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 尝试上载字节时URLSession的意外行为_Ios_Swift_Nsurlsession_Nsurlsessionconfiguration_Nsurlsessiontask - Fatal编程技术网

Ios 尝试上载字节时URLSession的意外行为

Ios 尝试上载字节时URLSession的意外行为,ios,swift,nsurlsession,nsurlsessionconfiguration,nsurlsessiontask,Ios,Swift,Nsurlsession,Nsurlsessionconfiguration,Nsurlsessiontask,我的应用程序一直在与服务器通信,我想计算得到的带宽。为此,我决定计算上传和下载速度 我正在使用NSURLSession与服务器通信。我正在做的是:在我恢复会话任务时存储时间戳(例如Time1)。在URLSession(session:NSURLSession,task:NSURLSessionTask,didSendBodyData bytesSent:Int64,totalBytesSent:Int64,totalBytesExpectedToSend:Int64)方法中,当totalByte

我的应用程序一直在与服务器通信,我想计算得到的带宽。为此,我决定计算上传和下载速度

我正在使用NSURLSession与服务器通信。我正在做的是:在我恢复会话任务时存储时间戳(例如Time1)。在
URLSession(session:NSURLSession,task:NSURLSessionTask,didSendBodyData bytesSent:Int64,totalBytesSent:Int64,totalBytesExpectedToSend:Int64)
方法中,当totalBytesSent超过或等于ExpectedByTestOsent时,我从
Time1
得到与当前时间的差值,并通过这种方式计算上传速度

这是我的密码:

//Initializing NSURLSession
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.test.ios.background")
var backgroundSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)

// Create session task:
var urlSessionTask = self.backgroundSession.uploadTaskWithRequest(request, fromFile: NSURL.fileURLWithPath(filePath!))
urlSessionTask.resume()
let time1 = NSDate().timeIntervalSinceReferenceDate
在这里,我在恢复会话任务后立即捕获了time1

func URLSession(session: NSURLSession, task: NSURLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) {
    if totalBytesSent >= totalBytesExpectedToSend {
        let time2 = NSDate().timeIntervalSinceReferenceDate
        let uploadSpeed = Int(Double(totalBytesSent) / (time2 - time1))            
    }
}
我在代码中进一步使用了这种上传速度。我每次使用新会话任务发送相同的JSON数据(如上所述)。问题是: 在第一次请求时,会话需要一些时间来上传数据,但在那之后,无论我的网络速度如何,它所花费的时间都太少了。(使用网络链接调节器更改网络)

以下是样本:

1st Request: Bytes uploaded: 11492 in 1.62111800909042 seconds 
2nd Request: Bytes uploaded: 11492 in 0.00142198801040649 seconds 
3rd Request: Bytes uploaded: 11492 in 0.00102704763412476 seconds 
4th Request: Bytes uploaded: 11492 in 0.00102400779724121 seconds