我需要写一个移动应用程序(Xamarin)来发送UDP广播,然后有一个桌面应用程序(WPF/WinForms)收听UDP广播。我从下面的链接中获得了示例,但它不起作用。Xamarin应用程序看起来还可以,但是桌面应用程序从来没有通过“listener.Receive(ref...)”语句。我将非常感谢你的帮助。谢谢。
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/using-udp-services
Xamarin服务器:
private void StartUdpDiscovery()
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress broadcast = IPAddress.Parse("192.168.1.255");
//byte[] sendbuf = Encoding.ASCII.GetBytes(args[0]);
IPEndPoint ep = new IPEndPoint(broadcast, 11000);
byte[] data = new byte[2]; //broadcast data
data[0] = 0x0A;
data[1] = 0x60;
s.SendTo(data, ep);
Console.WriteLine("Message sent to the broadcast address");
}桌面客户端/监听程序:
private void StartUdpListener()
{
UdpClient listener = new UdpClient(listenPort);
//IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Parse("192.168.1.255"), listenPort);
try
{
while (true)
{
Console.WriteLine("Waiting for broadcast");
byte[] bytes = listener.Receive(ref groupEP); // NOTE: THE DEBUGGER STALLS HERE AND NEVER MOVES ON...
Console.WriteLine($"Received broadcast from {groupEP} :");
Console.WriteLine($" {Encoding.ASCII.GetString(bytes, 0, bytes.Length)}");
}
}
catch (SocketException e)
{
Console.WriteLine(e);
}
finally
{
listener.Close();
}
}发布于 2021-09-22 19:43:08
原来IP地址是错误的。
IPAddress broadcast = IPAddress.Parse("192.168.1.255");https://stackoverflow.com/questions/69273408
复制相似问题