组播丢弃大量消息

时间:2018-10-05 13:53:18

标签: android networking multicast

我目前正在开发在办公环境中运行的服务,并且我目前正在尝试利用UPnP来发现和管理该服务-将在5到45台设备上运行。在测试中,我使用了两个运行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);
            }
        }

我可以看到正在调试的设备生成的消息,来自其他设备的某些消息,以及偶尔在其他设备上运行的服务生成的消息。

我确实运行多个WiFi网络,但是两个设备都设置在相同的SSID上(这是将来桥接SSID的另一个问题)。

我尝试了一个多播程序,它似乎吸收了更多的传输。

我已经尝试过WiFi锁定,但并没有看到它做得很好-设置后我什么也没收到。

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

这应该很简单,但是显然我缺少了一些东西。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

道歉,但刚在另一块板上发现Android 8中存在一个已知问题,并且他们的多播支持已经存在了几个月(考虑到这是网络的基本组成部分,我希望他们能尽快解决它)这阻碍了我向客户提供服务的部署。