【问题标题】:how to read udp packets sent to 255.255.255.255如何读取发送到 255.255.255.255 的 udp 数据包
【发布时间】:2013-03-10 02:49:56
【问题描述】:

我有一个运行在 iPhone 上的应用程序正在广播 UDP 数据包。我想编写一个控制台应用程序来读取我的 PC 上的 UDP 数据包。我试过这个例子,但无法读取任何数据包:

http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.aspx

我使用了 wireshark 并验证了 UDP 数据包被发送到给定端口上的 255.255.255.255。如何在 C# 应用程序中读取数据包?

谢谢!

【问题讨论】:

    标签: c# udpclient


    【解决方案1】:

    这是一个简单监听器的 C# 代码,应该没问题,但我是在 Mac 上写的,所以无法测试。

    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    
    public class UDPListener
    {
        public static int Main()
        {
            var done = false;
            var listener = new UdpClient(31337);
            var ipe = new IPEndPoint("255.255.255.255", 31337);
            var data = String.Empty;
    
            byte[] rec_array;
            try
            {
                while (!done)
                {
                    rec_array = listener.Receive(ref ipe);
                    Console.WriteLine("Received a broadcast from {0}", ipe.ToString() );
                    data = Encoding.ASCII.GetString(rec_array, 0, rec_array.Length);
                    Console.WriteLine("Received: {0}\r\rn", data);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
    
            listener.Close();
            return 0;
        }
    }
    

    【讨论】:

    • 显然,将 31337 替换为您的实际端口。
    • 这对我有用。我没有在端点中使用正确的 IP 地址。感谢您的快速回复!
    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多