Можно ли пропинговать хост и получить задержку?

Разработка приложения, использующего синхронизацию данных. Отправка изображений (даже с измененным размером) занимает время, если это делается через медленное интернет-соединение. Подумав, было бы лучше сначала проверить скорость интернета и отправлять данные только в том случае, если скорость приемлемая. Есть класс Apple Reachability, но у него есть только метод проверки включения Wi-Fi. Думаю, для меня было бы достаточно пропинговать хост и получить информацию о задержке из результата ping cmd. Эту информацию о задержке я бы использовал, чтобы решить, стоит ли отправлять данные сейчас или подождать.


person Centurion    schedule 04.05.2012    source источник
comment
Задержка != пропускная способность, уверены, что пинг — это то, что вам действительно нужно? Хотя, если это так, это может помочь: stackoverflow.com/questions/7437643/ios-ping-with- время ожидания   -  person ckhan    schedule 04.05.2012


Ответы (2)


Достижимость или пинг не скажут вам, насколько быстро или медленно будет передаваться файл. Это функция ping_time + (размер_файла/пропускная способность). Для любого большого файла ping_time намного меньше, чем file_size/пропускная способность.

Самый простой способ измерить это — приложение загружает и загружает не слишком маленький и не слишком большой файл и решает, действительно ли скорости загрузки и скачивания «достаточно высоки».

person Yusuf X    schedule 04.05.2012

Выполнение этого довольно сложно, однако у Apple есть полный рабочий пример программы здесь:

https://developer.apple.com/library/mac/#samplecode/SimplePing/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000716-Intro-DontLinkElementID_2

person lnafziger    schedule 04.05.2012
comment
Это не работает на iOS. - (void)simplePing:(SimplePing *)pinger didReceivePingResponsePacket:(NSData *)packet sequenceNumber:(uint16_t)sequenceNumber никогда не вызывается, даже после добавления <key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict> в Info.plist. - person Jaybo; 08.03.2017