如何在使用Xamarin.Android连接到WIFI和LTE的Android设备上使用UDP组播?

问题描述 投票:0回答:1
            _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多播加入代码。

此代码在Xamarin UWP App和仅WIFI Connect 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 App上正常工作。

UWP App可以使用任何LocalEndpoint发送和接收。

多播如何在连接到WIFI和LTE的Android设备上加入?

android xamarin xamarin.android udp multicast
1个回答
0
投票

LTE不支持组播,仅支持MMBS,这是运营商可以访问的3GPP组播变体。

© www.soinside.com 2019 - 2024. All rights reserved.