_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?