Многоадресная рассылка, отбрасывающая много сообщений - PullRequest
0 голосов
/ 05 октября 2018

В настоящее время я занимаюсь разработкой службы, которая работает в офисной среде, и в настоящее время я пытаюсь использовать UPnP для обнаружения и управления службой - будет работать от 5 до 45 устройств.в тестировании я использую два устройства Samsung под управлением Android 8.0.0.

широковещательный адрес 239.255.255.250 порт 1900

Я использую Wireshark и наблюдаю за всеми сообщениями, отправляемыми по сети.в моем приложении я получаю только несколько сообщений, и даже они не на частоте Wireshark.

    while (true)
        {
        try {
            while (true)
                {
                buffer = new byte[1000];
                dp = new DatagramPacket(buffer, buffer.length);
                mcSocket.receive(dp);
                String s = new String(dp.getData(), 0, dp.getLength());
                InetAddress ia = dp.getAddress();
                String hostAddress = ia.getHostAddress();
                Log.e(TAG, "index= " + s);

                if (s.contains("upnp:rootMaster"))
                    {
                    System.out.println();
                    }
                }
            }
        catch (IOException ex)
            {
            Logger.getLogger(DLNASearchListener.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

Я вижу сообщения, сгенерированные устройством, на котором я отлаживаю, некоторые сообщения с других устройств и иногда сообщения, сгенерированные моей службой, работающей на другом устройстве.

Я запускаю несколько сетей Wi-Fi, однако оба устройства настроены на один и тот же SSID (это еще один вопрос в будущем, связанный с соединением SSID).

Я пробовал многоадресную программу и, похоже,подобрать значительно больше передач.

Я пробовал блокировку Wi-Fi, и она не видела ничего хорошего - когда установлено, я ничего не получаю.

    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    WifiManager.MulticastLock multicastLock = wifi.createMulticastLock(masterService);
    multicastLock.setReferenceCounted(true);
    multicastLock.acquire();

это должно быть довольно просто, но, очевидно, я что-то упускаю,

любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 08 октября 2018

Извиняюсь, но только что обнаружил на другой плате, что есть известная проблема в Android 8 и их многоадресной поддержке, которая существует уже несколько месяцев - учитывая, что это фундаментальный компонент работы в сети, я надеюсь, что они быстро ее исправят -это убивает развертывание моего сервиса для клиентов.

...