Многоадресная рассылка от Android - PullRequest
1 голос
/ 13 февраля 2020

Я хочу использовать многоадресную рассылку на Android в локальной сети (Android - это сервер / издатель ). Проблема в том, что даже если я использую точный пример кода из baeldung или из книги: Джефф Фризен - Изучите Java для Android Разработка , пакеты НЕ добраться до любого другого устройства в локальной сети. Я использую Wireshark для устранения неполадок и вижу эти пакеты, только если удаленно перехватываю трафик Android c. Я использовал разные порты, разные адреса многоадресной рассылки (начиная с 231, 232, 239, ...), пробовал оба DatagramSocket и MulticastSocket, вручную устанавливал сетевой интерфейс, использовал MulticastLock, увеличивал TTL, выключал брандмауэр и т. Д. c. , но ни одна из этих рекомендаций не сработала для меня.

Вот мой пример кода:

    doAsync {
        val group = InetAddress.getByName("224.0.0.114")
        val socket = DatagramSocket()

        while (true) {
            val msg = "hello world".toByteArray()
            val packet = DatagramPacket(msg, msg.size, group, 4239)
            socket.send(packet)
            Thread.sleep(1000)
        }
    }

и разрешения манифеста Android (я добавил все, что должно быть связано с многоадресной передачей):

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Я тестирую код на физическом устройстве (Xiaomi Mi3, API 23), подключенный к тому же Wi-Fi, что и моя развивающаяся машина. Я могу получать пакеты только на одном устройстве. Я также пытался отправлять широковещательные сообщения, и трансляция работает нормально.

Нет ошибок, нет предупреждений. Я что-то упустил?

Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...