Нужно Бонжур дважды? - PullRequest
       18

Нужно Бонжур дважды?

3 голосов
/ 28 апреля 2011

Я запускаю прослушивающий сервер TCP через порт 66661. Я создаю уведомление Bonjour об этом. Нет проблем.

Прежде чем кто-либо подключится на 66661, приложение создает другую несвязанную сетевую службу (другой прослушивающий TCP-сервер) на другом порту и идентичным образом создает объявление Bonjour, на этот раз на 66662.

Это также отлично работает, и устройства могут видеть рекламу Bonjour и затем подключаться на 66662.

Обратите внимание, что 66661 должен и продолжает работать, позволяя подключать к нему другие плееры ... без проблем.

ОДНАКО ... Я обнаружил, что - после 66662 - добрый рекламный ролик для 66661 выглядит ненадежно .

Иногда он там / иногда он исчезает. (Мы не смогли найти точный образец.)

Кто-нибудь видел подобную ненадежность в Bonjour после запуска второй рекламы Bonjour?

Обходное решение. После того, как 66662 счастлив, я просто создаю еще одно идентичное объявление Bonjour для 66661. Точное повторение более ранней рекламы Bonjour с кодом 66661.

Это , кажется, не вызывает проблем , и действительно, , кажется, прекрасно работает в приложениях тома iOS без жалоб, сбоев и т. Д. Но это странно.

Вопрос 1, Я СЧИТАЮ, что Техническая записка QA1333 предполагает, что вполне нормально делать два или более таких инцидента Bonjour. Кто-нибудь знает об этом, это правильно, когда-либо DTSed проблема?

Вопрос 2, почему первая реклама Bonjour перестает работать - иногда да, иногда нет - в ситуации, когда вы создали другую?

Кто-нибудь видел это? Есть идеи? Приветствия.

По предложению Кевина: да, мы тщательно тестируем это с помощью таких инструментов, как Bonjour Browser и многочисленных устройств / Mac.

По предложению Джаррода: да, когда он останавливается / исчезает, он останавливается "для всех клиентов". Я думаю, что я на самом деле не знаю, как программно (на сервере) сказать, если он "незарегистрированный".

Ответы [ 2 ]

4 голосов
/ 01 мая 2011

Попробуйте запустить dns-sd -B _blah._tcp. . в терминале с любого Mac в вашей локальной сети.Это откроет запрос к этой службе, и вы сможете наблюдать за событиями Add и Remove.Это хороший способ убедиться, что ваша служба явно отменена из регистрации, а не (просто в качестве примера) не транслировать должным образом, как только новые клиенты начнут слушать после факта.

0 голосов
/ 29 апреля 2011

Bonjour является многоадресным UDP, UDP по определению ненадежен.Сообщения могут быть потеряны.

Вы не проясняете, становится ли служба незарегистрированной или ее просто нет.Это потребовало бы некоторой отладки и нескольких клиентов, чтобы увидеть, действительно ли служба перестает отвечать полностью на все запросы ко всем клиентам или только некоторым, или если что-то на сервере регистрации прерывает публикацию службы из-за неправильного TTL или другой конфигурации или логической ошибки.

...