Для реализации Zeroconf / bonjour требуется несколько сокетов?

Требуется ли более одного сокета для реализации Zeroconf / bonjour? Я использую Bonjour на прошивке, и мой чип поддерживает только один сокет.

Мне кажется, что потребуется как минимум два: - Один сокет для отслеживания многоадресных запросов и объявлений - Как минимум еще один сокет для разрешения и подключения к клиентам


person user837326    schedule 26.07.2011    source источник


Ответы (2)


Процитируем rfc:

When this document uses the term "Multicast DNS", it should be taken
to mean: "Clients performing DNS-like queries for DNS-like resource
records by sending DNS-like UDP query and response packets over IP
Multicast to UDP port 5353."

Чтобы полностью реализовать mDNS (Bonjour), вам нужен открытый сокет, привязанный к 224.0.0.251 (зарезервированный адрес IPv4), и порт 5353, открытый для приема запросов.

Очевидно, это касается только реализации Zeroconf - какой бы сервис вы ни рекламировали, потребуется больше открытых портов и сокетов.

person Chris Mowforth    schedule 04.08.2011
comment
NB: порт 5353 используется по умолчанию, но при необходимости его можно изменить. - person Chris Mowforth; 04.08.2011

В зависимости от того, чего вы пытаетесь достичь, вы можете использовать сокет для прослушивания объявлений многоадресной службы, выбрать службу (например, предложить пользователю список), закрыть сокет, а затем повторно использовать его для подключения к службе. Вам не нужно продолжать слушать служебные объявления, если вы уже выбрали одно из них, и если услуга, которую вы используете, отозвана (например, устройство, которое ее поставляет, выключено), вы можете вернуться к прослушиванию многоадресной передачи. найти альтернативу.

person parsley72    schedule 17.11.2012