Найдите сервисы, используя Zeroconf с JmDNS на AP локального устройства (точка доступа) - PullRequest
0 голосов
/ 09 августа 2011

С моим устройством Android, настроенным как точка доступа / точка доступа (AP), как я могу использовать JmDNS (3.4.0) для поиска других устройств, подключенных к этой точке доступа?

При использовании обычной точки доступа все работаетнормально при создании экземпляра JmDNS обычным способом;

jmdns = JmDNS.create();

Но при использовании моего устройства в качестве точки доступа это вызывает исключение.

    java.net.SocketException: No such device
    at org.apache.harmony.luni.platform.OSNetworkSystem.setSocketOption(Native Method)
    at dalvik.system.BlockGuard$WrappedNetworkSystem.setSocketOption(BlockGuard.java:382)
    at org.apache.harmony.luni.net.PlainDatagramSocketImpl.setOption(PlainDatagramSocketImpl.java:198)
    at org.apache.harmony.luni.net.PlainDatagramSocketImpl.join(PlainDatagramSocketImpl.java:137)
    at java.net.MulticastSocket.joinGroup(MulticastSocket.java:190)
    at javax.jmdns.impl.JmDNSImpl.openMulticastSocket(JmDNSImpl.java:459)
    at javax.jmdns.impl.JmDNSImpl.<init>(JmDNSImpl.java:420)
    at javax.jmdns.JmDNS.create(JmDNS.java:60)

Я также пытался создать экземпляр JmDNS слокальный IP

jmdns = JmDNS.create( InetAddress.getByName("192.168.1.1") );

, который просто выдает то же исключение.

Как я могу заставить JmDNS находить службы, подключенные к локальной точке доступа?

Ответы [ 3 ]

1 голос
/ 26 апреля 2012

Невозможно использовать многоадресную рассылку в локальной точке доступа, поскольку невозможно получить многоадресную блокировку. Таким образом, JmDNS не будет работать.

Для тех, кто сталкивается с этой проблемой, альтернативное решение поиска подключенных устройств, которые я использовал, основано на анализе / proc / net / arp

0 голосов
/ 05 февраля 2019

Теперь это возможно (начиная с API 16) с помощью Android Network Service Discovery (NSD).NSD поддерживает телефон как точку доступа / точку доступа, а также обычные соединения точки доступа (т. Е. Соединение с маршрутизатором).Таким образом, вам больше не нужны JmDns для достижения вашей цели.Смотри: https://developer.android.com/training/connect-devices-wirelessly/nsd

0 голосов
/ 09 марта 2012

Я не думаю, что это прямо отвечает на ваш вопрос, но я обнаружил, что если у меня нет активного Wi-Fi, jmDNS не будет работать. Мне пришлось отключить обнаружение, если мой Wi-Fi выключен.

...