代码:
try {
  group = InetAddress.getByName("192.168.1.0"); //用192.168.1.255也是出现一样的提示 
  socket = new MulticastSocket(port); 
  socket.joinGroup(group); 
} catch (Exception e) {
  e.printStackTrace();
}
=====================
本机的IP:192.168.1.108,掩码:255.255.255.0
捕捉的异常是:
java.net.SocketException: Not a multicast address
at java.net.MulticastSocket.joinGroup(Unknown Source)
at Receive.<init>(Receive.java:43)
at Receive.main(Receive.java:115)请教各位高手,这个广播的IP正确的应该是多少?用255和0好像都能收到广播,但是那个异常一直出错,非常奇怪

解决方案 »

  1.   

    可以参考下如何计算广播地址http://www.360doc.com/content/12/0325/15/90092_197547744.shtml
      

  2.   

    我知道了, multicast是多播, 而你用了个广播地址,明显不对啊一对多的服务:广播(broadcast)、多播(multicast)。对于广播,网络中的所有主机都会接收一份数据副本。对于多播,消息只是发送到一个多播地址,网络知识将数据分发给哪些表示想要接收发送到该多播地址的数据的主机。总得来说,只有UDP套接字允许广播或多播。参考此帖 http://blog.csdn.net/han_jiang_xue/article/details/7641193
      

  3.   

    multicast group的地址是有约定的,你join了192.168.x.x就不对了。发送方一定要把包发送到某个符合约定的地址,如239.1.1.10,接收方一定要join这个multicast group才能收到,这是multicast不同于broadcast的地方给你参考wiki
      

  4.   

    非常感谢。看到Demo中提到加入的group地址是224.255.10.0,还有一个demo用的是230.0.0.1,这是个真实存在的局域网IP吗?还是不是真实的IP,局域网可以使用192.168.x.x?
      

  5.   

    谢谢大家,我测试用224.0.0.1可以群播,局域网的电脑是192.168网段。
    是不是这个224.x只是群播的一种约定,与IP无关,与局域网电脑的网段没有任何关系?
      

  6.   


    是的 ipv4中的多播地址范围是:224.0.0.0到239.255.255.255我之引用的那个帖子里有说 http://blog.csdn.net/han_jiang_xue/article/details/7641193