Zeroconf Разрешение имени

Я разрабатываю управляющее устройство со встроенным веб-сервером. Веб-сервер предоставляет интерфейс управления для любого веб-браузера, который запрашивает его (из браузеров Windows, Mac, iPhone и Android и т. Д.).

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

Фиксированные IP-адреса слишком сложны для моих пользователей и могут работать неправильно, так как мое устройство может быть подключено к различным локальным сетям. Использование службы обнаружения uPnp требует, чтобы программное обеспечение работало на клиенте для некоторых платформ, и это не так естественно, как просто ввод веб-адреса. Я хочу реализовать разрешение имен.

Моя текущая реализация использует протокол netbios. Поэтому из браузера Windows я могу набрать //controller/, и это работает, но это не работает с Mac или смартфонами. Кроме того, я могу попытаться реализовать Apples mDnsresponder, который должен сделать Mac и iPhone счастливыми (хотя я думаю, что тогда я ограничен //controller.local/). Может быть, подобные вещи существуют и для Android, Symbian и т. Д., Но нет ли более универсального решения для создания одного сетевого имени, которое я мог бы попробовать?

В настоящее время платформа основана на процессоре TI Cortex M3 и lwIP.

Любая помощь или предложения о том, как найти решение, высоко ценится.

С уважением,

боб

2 ответа

Чтобы пользователи Windows могли "автоматически" находить ваше устройство с помощью Zeroconf, им необходимо:

  1. Установите демон mDNS (например, упомянутый вами mDNSResponder, который можно бесплатно получить у Apple)
  2. Установитевторой компонент программного обеспечения, который знает, как отправлять запросы демону mDNS и отображать доступные службы в локальной сети (т. Е. Встроенный веб-сервер вашего устройства).

Bonjour для Windows поставляется в комплекте с плагином Internet Explorer, который подходит для элемента № 2 и может быть не слишком техническим для ваших пользователей. (Им просто нужно загрузить и установить Bonjour для Windows и установить флажок для установки плагина Internet Explorer.) Пользователи Mac могут просто использовать браузер Safari, который уже поддерживает Zeroconf.

Последняя часть головоломки - и самая хитрая часть - это то, что вам придется изменить свое собственное программное обеспечение, чтобы зарегистрировать свой контроллер с помощью "локального демона mDNS". Однако, по-видимому, такого нет, потому что ваше "устройство управления" является встроенной системой. Так что вам нужно написать свой собственный демон mDNS. Это не так сложно сделать, и вы можете использовать код Apple mDNSPosix в качестве отправной точки. Но, в зависимости от ваших аппаратных ограничений, это может оказаться невозможным.

В целом, Zeroconf может быть сложным стеком протоколов для работы. Аспект "нулевой конфигурации" относится только к опыту пользователя. Для разработчика, это представляет довольно крутой кривой обучения. Если у ваших пользователей обычно работает только один экземпляр вашего устройства, это может быть излишним.

Я думаю, что вы можете использовать DynDns (www.dyndns.org), это бесплатно для того, что вы пытаетесь сделать. Вы можете использовать его, даже если у вас нет возможности получить фиксированный IP-адрес. В этом случае вы бы использовали утилиту обновления dyndns. Например, вы можете зарегистрировать ourCompanyName.dyndns.org, и он всегда будет перенаправлен на ваш локальный компьютер.

Другие вопросы по тегам