可能只能传入广播地址,如:
169.254.201.255  (C类子网)
169.254.255.255  (B类子网)
169.255.255.255  (A类子网)
255.255.255.255  (全网)下面是msdn的示例:UdpClient udpClient = new UdpClient();
// Creates an IPAddress to use to join and drop the multicast group.
IPAddress multicastIpAddress = IPAddress.Parse("239.255.255.255");try{
     // The packet dies after 50 router hops.
     udpClient.JoinMulticastGroup(multicastIpAddress, 50);
}
catch ( Exception e ){
    Console.WriteLine( e.ToString());
}

解决方案 »

  1.   

    你的那个应该会引发 ArgumentOutOfRangeException 异常,
    表示参数无效
      

  2.   

    Yashmak(双层面纱) 讲的有道理,但我没有检验过,169.254.201.105非广播地址
      

  3.   

    多路广播地址的范围从 224.0.0.0 到 239.255.255.255
    ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemnetsocketsudpclientclassjoinmulticastgrouptopic1.htm
      

  4.   

    Yashmak(双层面纱)的地址也可以,我没试过,但应该只能在单个子网中广播
      

  5.   

    同意Yashmak(双层面纱)!!你的IP地址不对
      

  6.   

    我的理解是:
    如果你只是要和一台主机通讯,又何必用多播?直接UdpClient.Connect(host)不就可以了?
    多播应该是用来在子网中群发消息用的,可以同时将消息发送到子网中的所有主机。
    当然你可以只让关心这个消息的主机监听这个消息。
      

  7.   

    唉,你还是不明白呀,广播是无连接的,所以发送方不关心接收方是谁,它只要保证把消息发到一个特定的地址就可以了,这个特定地址是TCP/IP协议所定义保留下来的,并不能给任何一台电脑使用。而你的接收方也不会知道是谁在广播,它要做的是保持监听状态,也就是监听发送方发送广播的那个特定地址。建议你查一下MSDN
      

  8.   

    另:udpClient.JoinMulticastGroup()是加入多路广播组,是采用UDPClient的广播机制工作
    而listener.Connect()则是连接到单个一个地址,是无法广播的。所以可能你对这些网络协议了解的不是很清楚
      

  9.   

    一个子网中,并不存在IP以.255结尾的主机,那是一个保留地址,称为“广播地址”。
    当然,其实子网中所有消息都是以广播形式发送的。消息会到达子网中的每一台主机。
    但是因为数据包的头包含接受方的MAC地址,所以通常每台主机只处理与自己的MAC匹配的消息。
    当MAC地址不匹配时,网卡只是简单的将数据包丢弃,而不向更高层传递。当然你可以通过控制网卡来改变这种行为,这就是“嗅探器”软件的理论基础。而当接受方的IP地址设置为以.255结尾时,每台主机都会接受此消息,并将之向高层传递。
    这样就好像是向子网中的每一台主机都发送了一个相同的数据包,就像“广播”一样。既然你的代码中的通讯对象很明确,只有一台主机,就不要用什么“广播”了,
    直接listener.Connect(host)就OK了。
      

  10.   

    Yashmak(双层面纱) 
    你第一个方法的地址应该会发给一个很小的子网,对吗?
    第二个方法我比较赞同,虽然没有用过UDP连接单台机器
      

  11.   

    谢谢你们的回答,我其实想做的是一个局域网QQ,发送广播的目的是,当我打开这个QQ时候,会发送一个消息给所有的局域网QQ在线用户,通知他们自己上线,并得到反馈消息