日期:2014-05-20  浏览次数:20870 次

请教:多点广播发生异常,IP用.0和.255都是一样的异常
代码:
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好像都能收到广播,但是那个异常一直出错,非常奇怪

------解决方案--------------------
可以参考下如何计算广播地址

http://www.360doc.com/content/12/0325/15/90092_197547744.shtml
------解决方案--------------------
我知道了, multicast是多播, 而你用了个广播地址,明显不对啊

一对多的服务:广播(broadcast)、多播(multicast)。对于广播,网络中的所有主机都会接收一份数据副本。对于多播,消息只是发送到一个多播地址,网络知识将数据分发给哪些表示想要接收发送到该多播地址的数据的主机。总得来说,只有UDP套接字允许广播或多播。

参考此帖 http://blog.csdn.net/han_jiang_xue/article/details/7641193
------解决方案--------------------
multicast group的地址是有约定的,你join了192.168.x.x就不对了。

发送方一定要把包发送到某个符合约定的地址,如239.1.1.10,接收方一定要join这个multicast group才能收到,这是multicast不同于broadcast的地方

给你参考wiki