Как ускорить медленную / медленную передачу TCP-сокета Windows Phone 7 (WP7)?

Недавно я начал использовать класс System.Net.Sockets, представленный в Mango выпуск WP7 и в целом наслаждались им, но заметили несоответствие в задержке передачи данных в режиме отладки и нормальной работе на телефоне.

Я пишу приложение для «дистанционного управления», которое передает один байт на локальный сервер в моей локальной сети через Wi-Fi, когда пользователь нажимает кнопку в приложении. Следовательно, воспринимаемая скорость отклика / своевременность приложения очень важна для хорошего взаимодействия с пользователем.

Когда телефон подключен к моему компьютеру через USB-кабель и приложение запущено в режиме отладки, TCP-соединение передает пакеты так же быстро, как пользователь нажимает кнопки.

Когда телефон отключен от ПК, пользователь может нажать до 7 кнопок (и, таким образом, в случае 7 команд «отправить» с 1 байтом полезной нагрузки будут отправлены все 7 байтов). Если пользователь нажмет кнопку и немного подождет. между нажатиями кажется задержка в 1 секунду.

Я пробовал установить Socket.NoDelay как на True, так и на False, и, похоже, это не имело значения.

Чтобы увидеть, что происходит, я использовал анализатор пакетов, чтобы увидеть, как выглядит трафик.

  • Когда телефон был подключен через USB к ПК (который использовал соединение Wi-Fi), каждый отдельный байт находился в собственном пакете с интервалом ~ 200 мс.

  • Когда телефон работал с собственным Wi-Fi-соединением (отключенным от USB), байты по-прежнему содержали свои собственные пакеты, но все они были сгруппированы вместе в пакеты по 4 или 5 пакетов, и каждая группа находилась на расстоянии ~ 1000 мс от следующей. .

Между прочим, время отклика от моей сети Wi-Fi до сервера составляет всего 2 мс, если измерять с моего ноутбука.

Я понимаю, что буферизация «отправляет» вместе, вероятно, позволяет телефону экономить энергию, но есть ли способ отключить эту «задержку»? Скорость отклика приложения важнее, чем экономия энергии.

7
задан Pretzel 3 January 2012 в 16:50
поделиться