2017-01-25 3 views
3

Я хочу внедрить модуль обнаружения службы для извлечения IP-адреса служебного вещательного устройства, похожего на браузер Bonjour. Можно ли реализовать его в Unity3D (Android/iOS). Может ли кто-нибудь навестить меня, как я могу это достичь. Небольшой пример был бы очень полезен. Как реализовать DNS-сервис Discovery в Unity3D, похожий на браузер Bonjour

Редактировать 1: Устройство IOT транслирует службу DNS, и я хочу получить эту службу в приложении Unity, чтобы найти IP-адрес устройства IOT. У меня нет доступа к программному обеспечению или исходному коду IOT.

ответ

2

Вам не нужно это делать с нуля. Существует новый Unity API под названием NetworkDiscovery, который предназначен для упрощения этого.

Чтобы найти, к каким IP-адресам подключиться, позвоните по номеру NetworkDiscovery.StartAsServer() на стороне сервера в функции Start().

На стороне клиента позвоните по телефону NetworkDiscovery.StartAsClient(), затем выполните функцию OnReceivedBroadcast(string fromAddress, string data);. Когда сервер будет найден, вызывается функция OnReceivedBroadcast(string fromAddress, string data);, и вы можете использовать возвращаемое значение fromAddress для подключения к вашему серверу.

Когда клиент подключается, вы можете остановить вещание, позвонив по телефону NetworkDiscovery.StopBroadcast().

Если вы просто делаете это для учебных целей, вам просто нужно трансляция с протоколом UDP. Для получения дополнительной информации вы можете прочитать this и this.

+1

Я попробовал класс NetworkDiscovery, он отлично работает. Но здесь стороннее устройство вещания не является моим клиентом единства. Таким образом, эта функция не видна в функции OnReceivedBroadcast(). Я вижу службу, транслируемую сторонним устройством в браузере Bonjour на одном устройстве, тогда как я не вижу передачу UDP от клиента Unity (редактор/устройство) в приложении браузера Bonjour. –

+0

Я также рассмотрел это во второй части моего вопроса. * Если вы просто делаете это для учебных целей, вам просто нужно трансляция с протоколом UDP. Для получения дополнительной информации вы можете прочитать это и это. * Пожалуйста, проверьте эти две ссылки о том, как это сделать. Первая ссылка объясняет, как это работает. Во вторых ссылках показано, как транслировать по сети с UDP. Это то, что ты хочешь. – Programmer

+0

Я не могу его достичь, используя NetworkDiscovery или UDPClient. Он показывает только трансляцию, которую я использую, используя NetworkDiscovery - запуск трансляции и трансляцию UDP. Где, как и в браузере Bonjour, я также вижу принтеры, подключенные к сети. Я успешно справился с этим в родном андроиде, используя класс ServiceListener. Можете ли вы PLS руководство меня дальше. Спасибо –

Смежные вопросы