using System;
using System.Net;
using System.Net.Sockets;
using System.Text;public class UDPMulticastListener
{    private static readonly IPAddress GroupAddress =
       IPAddress.Parse("192.168.1.88");
    private const int GroupPort = 11000;    private static void StartListener()
    {
        bool done = false;        UdpClient listener = new UdpClient();
        IPEndPoint groupEP = new IPEndPoint(GroupAddress, GroupPort);        try
        {
            listener.JoinMulticastGroup(GroupAddress);
            listener.Connect(groupEP);            while (!done)
            {
                Console.WriteLine("Waiting for broadcast");
                byte[] bytes = listener.Receive(ref groupEP);                Console.WriteLine("Received broadcast from {0} :\n {1}\n",
                    groupEP.ToString(),
                    Encoding.ASCII.GetString(bytes, 0, bytes.Length));
            }            listener.Close();        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }    }    public static int Main(String[] args)
    {
        StartListener();        return 0;
    }
}
小妹我从微软MSDN上拷贝下来一段代码学习UDP!可是为什么接收不了啊!我从192.168.1.88发送UDP 数据文报广播为什么我机器IP是192.168.1.66收不到那! 
而且我把这两个IP地址来回都换了!也收不到啊!数据文报一直从192.168.1.88在发!我机器是192.168.1.66怎么也收不到!
就在 listener.JoinMulticastGroup(GroupAddress);这行报错!
不会是微软代码太高深啦!在这里谢谢各位师哥啦!

解决方案 »

  1.   

    listener.JoinMulticastGroup(GroupAddress);
                listener.Connect(groupEP);
    这两句不要
    UdpClient listener = new UdpClient();
    改成
    UdpClient listener = new UdpClient(11000);这样试下看
      

  2.   

    广播地址不对
     private static readonly IPAddress GroupAddress =
           IPAddress.Parse("192.168.1.88");
    改为
     IPAddress.Parse("224.0.0.1")
      

  3.   

    谢谢!都解决了!但是我想问(whmjw(明年今日十年之后) )一下地址为什么改为224.0.0.1啊!
      

  4.   

    多路广播地址的范围从 224.0.0.0 到 239.255.255.255。如果指定的地址在此范围之外,或者所请求的路由器不支持多路广播,则 UdpClient 将引发 SocketException。