Как использовать NsdManager для обнаружения эмулируемого устройства в частной сети?
В настоящее время я работаю над мобильным приложением, которое обнаруживает и распознает устройство в частной сети. Приложение в настоящее время работает отлично и позволит мне подключить сокет к этому устройству.
Сейчас я работаю над функцией, которая не может быть юридически реализована, пока OSHA не одобрит ее. Таким образом, чтобы обойти это, мы эмулировали устройства, которые мы можем использовать вместо реального физического устройства. Этот эмулятор работает на планшете Windows с использованием Bonjour, но мое приложение с использованием Android NsdManager
, обнаружит эмулированное устройство и попытается разрешить его, но я так и не получил ответ на звонок resolveService()
, ни onResolveFailed
или же onServiceResolved
называются. С реальным физическим устройством приложение работает без проблем.
Существуют ли известные проблемы, которые могут привести к тому, что это не будет работать с эмулируемым устройством? Или может быть что-то еще, что я мог бы найти возможное решение для этого?
РЕДАКТИРОВАТЬ
Таким образом, для правильной работы приложения и ноутбук с Windows подключены к WiFi-маршрутизатору, поэтому ноутбук и телефон / планшет могут находиться в одной сети. Вот журнал при подключении через маршрутизатор WiFi к эмулируемому устройству на этом ноутбуке:
08-24 08: 35: 04.428 12514-12625 / com.tsi.fitpro D / ZeroConf: О разрешении службы.
08-24 08: 35: 04.431 455-1484 /? D / MDnsDS: resolService(18, (null), имя эмулятора, _telnet._tcp., Local.)
08-24 08: 35: 04.433 455-1484 /? D / MDnsDS: startMonitoring 18 запускает повторное сканирование
08-24 08: 35: 04.433 455-1483 /? D / MDnsDS: Мониторинг опроса получил данные pollCount = 2, 1
08-24 08: 35: 04.434 455-1483 /? D / MDnsDS: controlSocket показывает revent= 1
MDnsSdListener:: Монитор получил 1
MDnsSdListener:: Повторное сканирование опроса монитора - размер =15, в реальном времени = 2
Собираюсь на опрос с pollCount 3
Монитор опроса получил данные pollCount = 3, 1
Монитор найден 1.revents = 1 - вызов ProcessResults
Разрешение выполнено в течение 18 лет. Эмулятор name._telnet._tcp.local. at LaptopName.: 3603 с txtLen 1
controlSocket показывает revent= 0
Собираюсь на опрос с pollCount 3
08-24 08: 35: 04.437 783-1663 /? E / NsdServiceInfo: при разборе записей txt (pos = 1): запись txt с нулевым размером
08-24 08: 35: 04.438 455-1484 /? D / MDnsDS: остановка разрешения с помощью ссылки 0xb300c52c
freeServiceRef 18
запуск повторного сканирования
08-24 08: 35: 04.438 455-1483 /? D / MDnsDS: опрос монитора получил данные pollCount = 3, 2
Монитор найден 1.revents = 32 - вызов ProcessResults
08-24 08: 35: 04,439 455-1483 /? W // system / bin / netd: dnssd_clientstub DNSServiceProcessResult, вызванный с недопустимым DNSServiceRef 0xb3029070 FFFFFFFF DDDDDDDD
08-24 08: 35: 04,439 455-1483 /? D / MDnsDS: controlSocket показывает revent= 1
MDnsSdListener:: Монитор получил 1
MDnsSdListener:: Повторное сканирование опроса монитора - размер =15, вживую = 1
Собираюсь на опрос с pollCount 2
08-24 08: 35: 04.443 455-1484 /? D / MDnsDS: getAddrInfo (19, (null) 0, LaptopName.)
startMonitoring 19
запуск повторного сканирования
getAddrInfo успешно
08-24 08: 35: 04.443 455-1483 /? D / MDnsDS: Мониторинг опроса получил данные pollCount = 2, 1
controlSocket показывает revent= 1
08-24 08: 35: 04.444 455-1483 /? D / MDnsDS: MDnsSdListener:: Монитор получил 1
MDnsSdListener:: Повторное сканирование опроса монитора - размер =15, в реальном времени = 2
Собираюсь на опрос с pollCount 3
08-24 08: 35: 04,883 783-783 /? D / WifiTrafficPoller: notifyOnDataActivity () - mBusMaxLock.acquire ()
08-24 08: 35: 05.232 783-1630 /? D / wifi: onLinkStatsResults: radio_stat.on_time = 9651912
onLinkStatsResults: radio_stat.tx_time = 0
onLinkStatsResults: radio_stat.rx_time = 0
android_net_wifi_getLinkLayerStats: radio_stat.on_time = 9651912
android_net_wifi_getLinkLayerStats: radio_stat.tx_time = 0
android_net_wifi_getLinkLayerStats: radio_stat.rx_time = 0
А вот журнал подключения WiFi-роутера к реальному устройству. Это работает.
08-24 08: 47: 55.744 19492-19583 / com.tsi.fitpro D / ZeroConf: имя-фактического устройства
О разрешении службы.
08-24 08: 47: 55,747 455-1484 /? D / MDnsDS: resolService(21, (null), имя-фактического устройства, _telnet._tcp., Local.)
08-24 08: 47: 55,749 455-1484 /? D / MDnsDS: startMonitoring 21
запуск повторного сканирования
ResolutionService успешно
08-24 08: 47: 55,749 455-1483 /? D / MDnsDS: Мониторинг опроса получил данные pollCount = 2, 1
controlSocket показывает revent= 1
MDnsSdListener:: Монитор получил 1
MDnsSdListener:: Повторное сканирование опроса монитора - размер =15, в реальном времени = 2
Собираюсь на опрос с pollCount 3
Монитор опроса получил данные pollCount = 3, 1
Монитор найден 1.revents = 1 - вызов ProcessResults
разрешение успешно завершено в течение 21 года при поиске фактического имени устройства._telnet._tcp.local. на фактическое-имя-устройства.local.:3603 с txtLen 1
08-24 08: 47: 55,750 455-1483 /? D / MDnsDS: controlSocket показывает revent= 0
Собираюсь на опрос с pollCount 3
08-24 08: 47: 55,752 783-1663 /? E / NsdServiceInfo: при разборе записей txt (pos = 1): запись txt с нулевым размером
08-24 08: 47: 55,753 455-1484 /? D / MDnsDS: остановка разрешения с помощью ссылки 0xb300c514
freeServiceRef 21
запуск повторного сканирования
08-24 08: 47: 55,754 455-1483 /? D / MDnsDS: опрос монитора получил данные pollCount = 3, 2
Монитор найден 1.revents = 32 - вызов ProcessResults
08-24 08: 47: 55,754 455-1483 /? W // system / bin / netd: dnssd_clientstub DNSServiceProcessResult, вызванный с недопустимым DNSServiceRef 0xb3029070 FFFFFFFF DDDDDDDD
08-24 08: 47: 55,754 455-1483 /? D / MDnsDS: controlSocket показывает revent= 1
MDnsSdListener:: Монитор получил 1
MDnsSdListener:: Повторное сканирование опроса монитора - размер =15, вживую = 1
Собираюсь на опрос с pollCount 2
08-24 08: 47: 55,756 455-1484 /? D / MDnsDS: getAddrInfo (22, (null) 0, фактическое имя-устройства.local.)
08-24 08: 47: 55,757 455-1484 /? D / MDnsDS: startMonitoring 22
08-24 08: 47: 55,758 455-1484 /? D / MDnsDS: запуск повторного сканирования
getAddrInfo успешно
08-24 08: 47: 55,758 455-1483 /? D / MDnsDS: Мониторинг опроса получил данные pollCount = 2, 1
controlSocket показывает revent= 1
MDnsSdListener:: Монитор получил 1
MDnsSdListener:: Повторное сканирование опроса монитора - размер =15, в реальном времени = 2
Собираюсь на опрос с pollCount 3
Монитор опроса получил данные pollCount = 3, 1
Монитор найден 1.revents = 1 - вызов ProcessResults
getAddrInfo преуспел в течение 22: 22 "фактическое-имя-устройства. местоположение". 120 192.168.8.243
controlSocket показывает revent= 0
Собираюсь на опрос с pollCount 3
08-24 08: 47: 55.766 19492-19583 / com.tsi.fitpro D / ZeroConf: служба разрешена.
08-24 08: 47: 55,766 455-1484 /? D / MDnsDS: Остановка getaddrinfo с ref 0xb300c52c
08-24 08: 47: 55.766 19492-19583 / com.tsi.fitpro D / ZeroConf: имя-фактического устройства
08-24 08: 47: 55,766 455-1484 /? D / MDnsDS: freeServiceRef 22 запускает повторное сканирование
08-24 08: 47: 55.766 19492-19583 / com.tsi.fitpro D / ZeroConf: 3603
08-24 08: 47: 55,767 455-1483 /? D / MDnsDS: опрос монитора получил данные pollCount = 3, 2
Монитор найден 1.revents = 32 - вызов ProcessResults
08-24 08: 47: 55,767 455-1483 /? W // system / bin / netd: dnssd_clientstub DNSServiceProcessResult, вызванный с недопустимым DNSServiceRef 0xb3029070 FFFFFFFF DDDDDDDD
08-24 08: 47: 55,767 455-1483 /? D / MDnsDS: controlSocket показывает revent= 1
08-24 08: 47: 55,768 455-1483 /? D / MDnsDS: MDnsSdListener:: Монитор получил 1
MDnsSdListener:: Повторное сканирование опроса монитора - размер =15, вживую = 1
Собираюсь на опрос с pollCount 2
08-24 08: 47: 55,770 455-1482 /? D / EnterpriseController: netId равен 0
08-24 08: 47: 55,770 455-1482 /? D / DnsProxyListener: DNSDBG:: dns by add 2
08-24 08: 47: 55,779 455-1482 /? D / EnterpriseController: netId равен 0
08-24 08: 47: 55,779 455-1482 /? D / DnsProxyListener: DNSDBG:: dns addrinfo af 0
08-24 08: 47: 55.784 19492-19583 / com.tsi.fitpro D / ZeroConf: actual-device-name.lan
готовится отправить решенную услугу в Кордову. 08-24 08: 47: 55.785 19492-19583 / com.tsi.fitpro D / ZeroConf: разрешенная служба была отправлена в Кордову.
Единственное отличие, которое я действительно вижу, finding emulator-name._telnet._tcp.local. at LaptopName.:3603
а также finding actual-device-name._telnet._tcp.local. at actual-device-name.local.:3603
LaptopName, являясь частью домена, в конце не имеет.local, как настоящее устройство. Может ли это привести к срабатыванию Android?