Медленное разрешение имен в Bonjour

Это кажется настолько основным, что люди будут кричать об этом, поиск в Интернете ничего не показал, но я тестировал его на нескольких сетях и компьютерах. У нас возникает проблема, когда мы используем .local url для доступа к ресурсам очень медленно. Если мы используем прямой IP-адрес, мы не видим этих задержек.

В нашей тестовой установке с отключенным устройством устройство и компьютер находятся на одном коммутаторе и являются единственными устройствами на коммутаторе. То же самое происходит, когда мы не находимся в этой очень ограниченной конфигурации сети. Mac OS X Lion в командной строке мы получаем следующие результаты:

С прямым ip:

curl 10.101.62.42 0.01s user 0.00s system 18% cpu 0.059 total 

С именем bonjour:

 curl http://xrx0000aac0fefd.local 0.01s user 0.00s system 0% cpu 5.063 total 

Для разрешения требуется только более 5 секунд на запрос. Не имеет значения, с каким устройством мы пытаемся подключиться, похоже, что это происходит в нашем приложении для iPhone, и медленно работает с сценариями Python. Кажется, что Safari быстро разрешает имена.

Мы можем решить один раз, а затем использовать IP-адрес, но этот первый запрос будет по-прежнему неприемлемо медленным, и я не думаю, что это так, как должен работать Bonjour.

Мы не совсем уверены, когда это началось, но это было не всегда так.

Изменить: другая точка данных. На Snow Leopard это не замедляется при разрешении:

 $ time curl http://hp1320.local > /dev/null % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 101 2848 0 2848 0 0 15473 0 --:--:-- --:--:-- --:--:-- 36512 real 0m0.201s user 0m0.005s sys 0m0.009s 

Это разрешено в iOS 5 и Lion 10.7.2. Это огромное облегчение. К сожалению, 4.3 пользователей приложения получат это медленное поведение. Угадайте, это еще одна причина для обновления.

Помните ли вы, что вы упомянули, когда вы просматриваете их? Перечисление должно быть довольно быстрым:

 mdns -B _http._tcp 

Возможно, что-то замедляет разрешение имен. Если вы запрашиваете IP-адреса с помощью dig он должен немедленно вернуть правильный адрес:

 dig A xrx0000aac0fefd.local @224.0.0.251 -p 5353 

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

  • Загрузчик приложений для Windows
  • Xcode: Scheme scripts vs Целевые скрипты
  • параметры конфигурации, такие как «-extra-cflags» - я смущен
  • Как я могу проверить, что я запущен в заданной очереди GCD без использования dispatch_get_current_queue ()?
  • Как я могу программно найти версию Swift?
  • Поиск эквивалента для UIWebViewDelegate для портирования приложения iOS в OSX
  • Как запустить FlashBuilder 4.7 на OSX с помощью Java 1.7
  • Ошибка в интерфейсе Builder Cocoa Touch Tool после обновления раскадровки с xcode 4 до 5
  • «Это приложение зависит от ткани» при установке ткани с помощью CocoaPod
  • Рисование пользовательского NSScroller в проблеме NSScrollView
  • Сгибание / сбой кода Xcode Swift
  • Interesting Posts

    React Native NetInfo всегда возвращается в автономный режим

    Правильный и безопасный способ хранения покупок в приложениях

    UITabBarController не меняет цвет значков кнопки «больше»

    Сколько кадров в CMSampleBuffer?

    Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: «executeFetchRequest: ошибка: запрос на выборку должен иметь объект».

    Отношения с основными данными потеряны после обновления приложения

    Как проверить мои приложения для iOS

    Как сделать первый запуск руководства для iPhone App с Xcode

    Установите нижний колонтитул пользовательского стола со Swift

    Возможно ли завершить действие SKAction?

    API-интерфейс Foursquare iOS

    Прогулка по цепочке ответчиков для передачи пользовательских событий. Это неправильно?

    Xcrun не внедряет прошедший профиль подготовки

    AVFoundation captureOutput didOutputSampleBuffer Delay

    Как добавить уведомления к значку в приложении iOS

    Давайте будем гением компьютера.