Ковыряю Bonjour и иже с ним. Возникли вопросы. Буду признателен.
1. Сервис зарегистрировался и умер. Как респондер узнает об этом печальном факте?
2. Кто-то зарегистрировался и нагло врет. Есть ли способ сказать об этом респондеру?
3. Респондер флудит. Есть ли средства призвать его к порядку?
4. Есть подозрение, что jmDNS игнорирует KnownAnswer. Кто-нибудь с этим сталкивался?
Здравствуйте, vnp, Вы писали:
vnp>1. Сервис зарегистрировался и умер. Как респондер узнает об этом печальном факте?
Пересканировав сеть по таймауту.
vnp>2. Кто-то зарегистрировался и нагло врет. Есть ли способ сказать об этом респондеру?
Начать "диалог" с хостом. В зависимости от того, кем прикинулся хост он будет вести себя по разному, и наглая ложь может всплыть.
vnp>3. Респондер флудит. Есть ли средства призвать его к порядку?
Нет, это Zeroconf сеть.
vnp>4. Есть подозрение, что jmDNS игнорирует KnownAnswer. Кто-нибудь с этим сталкивался?
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, vnp, Вы писали:
vnp>>1. Сервис зарегистрировался и умер. Как респондер узнает об этом печальном факте?
KP>Пересканировав сеть по таймауту.
Оказалось, что существуют мирные средства. Респондера с сервисом связывает сокет, и если сервис не реагирует на, то респондер имеет право счесть его мертвым. Все счастливы.
vnp>>2. Кто-то зарегистрировался и нагло врет. Есть ли способ сказать об этом респондеру?
KP>Начать "диалог" с хостом. В зависимости от того, кем прикинулся хост он будет вести себя по разному, и наглая ложь может всплыть.
Здравствуйте, vnp, Вы писали:
vnp>Оказалось, что существуют мирные средства. Респондера с сервисом связывает сокет, и если сервис не реагирует на, то респондер имеет право счесть его мертвым. Все счастливы.
Это решение хорошо для того случая, если у тебя есть постоянное соединение с сервисом. Но это далеко не самый распространенный сценарий использования Bonjour.
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, vnp, Вы писали:
vnp>>Оказалось, что существуют мирные средства. Респондера с сервисом связывает сокет, и если сервис не реагирует на, то респондер имеет право счесть его мертвым. Все счастливы.
KP>Это решение хорошо для того случая, если у тебя есть постоянное соединение с сервисом. Но это далеко не самый распространенный сценарий использования Bonjour.
Можно с этого места поподробнее? Мне показалось, что респондер с провайдером поддерживают астральную связь постоянно. Типа, sdRef, event callbacks всякие. Если чего, то я полный чайник в этих делах, и буду крайне признателен за любое наставление.
В частности, мой use case — домашняя сетка. Один сервис (и один респондер на том же ящике) и пара-тройка клиентов. Какие грабли меня ждут?
Здравствуйте, vnp, Вы писали:
vnp>В частности, мой use case — домашняя сетка. Один сервис (и один респондер на том же ящике) и пара-тройка клиентов. Какие грабли меня ждут?
Я имел ввиду следующую ситуацию. В сети сидит устройство, к примеру принтер. Клиент, на старте, запрашивает все доступные устройства интересующего его класса. Принтер говорит что "вот он тут". Но клиент не устанавливает с ним соединения, он просто хранит информацию о том, где найти принтер. Т.е. принтеру ничего не мешает уйти в оффлай ничего не сказав.
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, vnp, Вы писали:
vnp>>В частности, мой use case — домашняя сетка. Один сервис (и один респондер на том же ящике) и пара-тройка клиентов. Какие грабли меня ждут?
KP>Я имел ввиду следующую ситуацию. В сети сидит устройство, к примеру принтер. Клиент, на старте, запрашивает все доступные устройства интересующего его класса. Принтер говорит что "вот он тут". Но клиент не устанавливает с ним соединения, он просто хранит информацию о том, где найти принтер. Т.е. принтеру ничего не мешает уйти в оффлай ничего не сказав.
А. Понял. Прошу прощения за невнятность. Меня изначально интересовал такой сценарий:
— Сервис регистрируется
— Респондер говорит "вот сервис, кому сервис!"
— Сервис умирает
— Респондер не замечает потери бойца и продолжает его рекламировать
— Все в расстройстве
Здравствуйте, vnp, Вы писали:
vnp>Здравствуйте, kaa.python, Вы писали:
KP>>Здравствуйте, vnp, Вы писали:
vnp>>>В частности, мой use case — домашняя сетка. Один сервис (и один респондер на том же ящике) и пара-тройка клиентов. Какие грабли меня ждут?
KP>>Я имел ввиду следующую ситуацию. В сети сидит устройство, к примеру принтер. Клиент, на старте, запрашивает все доступные устройства интересующего его класса. Принтер говорит что "вот он тут". Но клиент не устанавливает с ним соединения, он просто хранит информацию о том, где найти принтер. Т.е. принтеру ничего не мешает уйти в оффлай ничего не сказав.
vnp>А. Понял. Прошу прощения за невнятность. Меня изначально интересовал такой сценарий: vnp>- Сервис регистрируется vnp>- Респондер говорит "вот сервис, кому сервис!" vnp>- Сервис умирает vnp>- Респондер не замечает потери бойца и продолжает его рекламировать vnp>- Все в расстройстве
vnp>Оказывается, замечает и перестает.
Это целиком ответственность сервиса перестать рекламировать себя если он не работает.
Касательно примера выше, никогда не надо хранить информацию ГДЕ найти принтер. Топология сети может измениться и толку от этой информации будет 0.