2015-11-24 2 views
0

Я пытаюсь определить скорость моего интернета с помощью NSURLConnection. То, что я делаю, я начинаю загружать файл, в делегатах NSURLConnection, я начинаю время, а затем, когда загрузка заканчивается, он получает временные рамки, а также полученные данные, а затем я рассчитываю получить мб/сек, используя ниже кода.Обнаружение скорости в Интернете в быстром

 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!

+0

Еще одна вещь, которую я отметил, что, когда я тестировал, ее показ справа приводит к симулятору, однако в оригинальном устройстве его отображение меньше! – Saty

+0

Кстати, в этом примере используется 'NSURLConnection', который теперь устарел. Вместо этого используйте 'NSURLSession'. В ответ на ваш вопрос о 'timeIntervalSinceDate', который возвращает [' NSTimeInterval'] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/index.html#//apple_ref/c/tdef/NSTimeInterval), который измеряется в секундах. – Rob

ответ

0

Я делясь на 1024 в the example, вы взяли это просто потому, что я думаю, что поиск байтов в секунду дает число, которое слишком велико, чтобы понять (и это предполагает вводящую в заблуждение степень точности, учитывая изменчивость в этом количестве).

Делясь на 1024, вы получаете килобайты в секунду. Чтобы получить мегабайты в секунду, вы разделили бы на 1024 * 1024. 1024 в этом исходном коде кода были ошибкой, так как это принесло бы килобайты в секунду.

Итак, используйте любое измерение, которое вы хотите. Байты в секунду, килобайт в секунду, мегабайты в секунду. Или вы можете умножить мегабайты в секунду на 8 и получить мегабит в секунду (еще одно общее измерение скорости). Просто разделите байты в секунду на соответствующий коэффициент.

+0

спасибо за помощь !!! Я думаю, что я делаю это. Нужно ли использовать NSURLSession вместо NSURLConnection? поскольку я получаю данные – Saty

+0

@Saty - 'NSURLConnection' официально устарел от iOS 9, поэтому, пока вы технически можете его использовать, это не очень хорошая идея. Вы не должны использовать 'NSURLConnection', если вам не обязательно (например, вы пытаетесь поддерживать версии iOS, которые предшествуют« NSURLSession », то есть iOS 6 или ранее). – Rob

 Смежные вопросы

  • Нет связанных вопросов^_^