гнездо sdk для iPhone - используемая пропускная способность - PullRequest
1 голос
/ 04 июня 2010

Я тестирую приложение, которое подключается через асинхронный сокет TCP к серверу C # и отправляет 1 байт каждые 30 секунд (выполнение сердцебиения). Примерно через час приложение отправило на сервер 132 пакета (одного байта), пакеты были получены в порядке. Приложение iPhone подключилось один раз к серверу и после этого отправило пакеты через открытое соединение (сервер ничего не отправляет). Я сделал это, чтобы измерить используемую пропускную способность. Поэтому я перешел в «Телефон»> «Настройки»> «Основные»> «Использование». и он измерял 366 КБ вверх и 344 КБ вниз (я сбросил статистику перед тестом). На телефоне не установлено другое приложение, подключенное к сети, и я пробовал это примерно 5 раз с похожими результатами.

Это естественно? Я отправил только 132 байта, но используемая пропускная способность была около 710 килобайт (как 7000 больше). Есть ли такая большая нагрузка на полосу пропускания от протокола TCP / IP? Я предполагаю, что у меня будут худшие результаты с реализацией опроса Http, причиной заголовков http.

Ответы [ 4 ]

1 голос
/ 04 июня 2010

Нет, что-то еще использует полосу пропускания, например Safari или Mail для проверки обновлений или что-то еще. Не может быть 3K на пакет вверх и вниз.

0 голосов
/ 04 июня 2010

Для каждого отправляемого или получаемого пакета есть издержки и дополнительные издержки для установки или разрыва соединения. Отправка большого количества небольших пакетов повлечет за собой большие издержки TCP, и только измерение байтов, полученных на другом конце подключенного соединения, не будет включать издержки. Если вы хотите меньше, переключитесь на UDP и разберитесь со сложностями поддержания соединения самостоятельно.

Кроме того, скорее всего, есть дополнительные процессы ОС, использующие пропускную способность в фоновом режиме. Отключите все почтовые / календарные / push-уведомления для достижения наилучших результатов.

0 голосов
/ 04 июня 2010

Я также протестировал получение 1 байта (примерно) с сервера через http (обработчик asp.net http, который отвечает с помощью plain / text = 1). Я ожидаю, что этот метод будет использовать большую пропускную способность из-за заголовков http. Но после тестирования устройства Iphone сообщает, что каждый 1-байтовый запрос от сервера (со всеми заголовками http) стоил около 3,5 КБ. Еще меньше по сравнению со средней стоимостью (5–7 кБ) каждого пакета при использовании прямых tcp-сокетов.

0 голосов
/ 04 июня 2010

Если вы используете Wi-Fi-соединение, можно захватывать весь трафик с iPhone с помощью Wireshark на другом компьютере.Таким образом, вы можете получить указание на то, что / где используется дополнительная пропускная способность.

...