- Я пишу приложения UWP и Android, используя Xamarin.forms & .net Standard 2 для общего кода.
- Я пытаюсь отправлять и получать boradcast UPD из обоих приложений, но проблема в том, что я могу отправлять и получать, как и ожидалось, только из приложения Android, а приложение UWP не может принимать широковещательный пакет UDP.?
- Я установил wireshark на Windows, и он может получать все пакеты из двух приложений.
- Я добавил правило брандмауэра для своего app.uwp.exe (разрешить любую сеть, любой порт, любой протокол, любой IP-адрес). Я перезапустил компьютер, и мое приложение UWP все еще не может получить от приложения Android.
Код:
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using System.Net.Sockets;
using System.Net;
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ItemsPage : ContentPage
{
public async static Task<String> UDP_receive()
{
var myUDP = new UdpClient(8888);
myUDP.EnableBroadcast = true;
var myResult = await myUDP.ReceiveAsync();
myUDP.Close();
return Encoding.ASCII.GetString(myResult.Buffer) + " : " + myResult.RemoteEndPoint.Address.ToString();
}
public async static Task UDP_Send()
{
var myUDP = new UdpClient();
var RequestData = Encoding.ASCII.GetBytes(DateTime.Now.ToLongTimeString());
myUDP.EnableBroadcast = true;
await myUDP.SendAsync(RequestData, RequestData.Length, new IPEndPoint(IPAddress.Broadcast, 8888));
myUDP.Close();
}
void Button1_click(object sender, EventArgs e)
{
StartListen();
StartSending();
}
async Task StartListen()
{
Exception eXX = null;
while (eXX == null)
{
try
{
myText.Text += Environment.NewLine + await UDP_receive();
}
catch (Exception ex2)
{
eXX = ex2;
log(ex2);
}
}
}
async Task StartSending()
{
Exception eXX = null;
while (eXX == null)
{
try
{
await MyData.UDP_Send();
await Task.Delay(1000);
}
catch (Exception ex2)
{
eXX = ex2;
log(ex2);
}
}
}
}
Выход Android:
11:57:11: 192.168.1.155
11:57:11: 192.168.1. 100
11:57:12: 192.168.1.155
11:57:12: 192.168.1. 100
11:57:13AM: 192.168.1.155
11:57:13 AM: 192.168.1. 100
....
Примечание: 192.168.1.100 - это IP-адрес компьютера Windows *
Выход UWP:
11:57:11: 192.168.1.100
11:57:12: 192.168.1.100
11:57:13: 192.168.1.100
11:57: 14:00: 192.168.1.100
11:57:15:00: 192.168.1.100
....