Как использовать UDP Multicast на устройствах Android, подключенных к WIFI и LTE с использованием Xamarin. Android? - PullRequest
0 голосов
/ 25 марта 2020
            _udpAddr = IPAddress.Parse("228.5.6.9");
            var port = 3333;

            IPAddress localAddr = IPAddress.Any;
            // Create endpoints
            _remoteEndPoint = new IPEndPoint(_udpAddr, port);
            _localEndPoint = new IPEndPoint(localAddr, port);

            // Create and configure and bind UdpClient
            _udpclient = new UdpClient(_localEndPoint);

            // Join
            _udpclient.JoinMulticastGroup(_udpAddr, localAddr);

            // Start listening for incoming data
            _udpclient.BeginReceive(new AsyncCallback(ReceivedCallback), null);

Это мой код соединения UDP Multicast.

Этот код отлично работает в приложениях Xamarin UWP и WIFI. Подключайте только устройства Android.

Но когда Android устройства подключенный к WIFI и LTE, устройство не может получать и отправлять что-либо.

Итак, я изменил настройку LocalEndPoint следующим образом:

    ...
    ....
    //IPAddress localAddr = IPAddress.Any;
    IPAddress localAddr = IPAddress.Parse(GetLocalIPAddress());
    ....
    ..

    public static string GetLocalIPAddress()
    {
        var host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (var ip in host.AddressList)
        {
            if (ip.AddressFamily == AddressFamily.InterNetwork
                && ip.ToString().Contains("192.168."))
            {
                return ip.ToString();
            }
        }
        throw new Exception("Local IP Address Not Found!");
    }

С этим кодом работает каждая Android отправка устройства хорошо, но ничего не получает.

Интересно то, что оба кода прекрасно работают в приложении UWP.

Приложение UWP может отправлять и получать с использованием любого LocalEndpoint.

Как можно многоадресно присоединиться к Android устройствам, подключенным к WIFI и LTE?

1 Ответ

0 голосов
/ 26 марта 2020

LTE не поддерживает Multicast, только MMBS, который является 3GPP-вариантом Multicast, доступным для операторов.

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