【问题标题】:UDP Discovery Code Unable to Receive UDP BroadcastUDP 发现代码无法接收 UDP 广播
【发布时间】:2021-09-21 17:49:53
【问题描述】:

我需要编写一个移动应用程序 (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();
        }
    }

【问题讨论】:

    标签: networking udp endpoint udpclient


    【解决方案1】:

    原来IP地址不正确。

        IPAddress broadcast = IPAddress.Parse("192.168.1.255");
    

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 2019-05-12
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 2020-02-21
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多