// join multicast group on this interface, and also use this
// interface for outgoing multicast datagrams
NetworkInterface ni = NetworkInterface.getByName("hme0");
DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)
.setOption(StandardSocketOptions.SO_REUSEADDR, true)
.bind(new InetSocketAddress(5000))
.setOption(StandardSocketOptions.IP_MULTICAST_IF, ni);
InetAddress group = InetAddress.getByName("225.4.5.6");
MembershipKey key = dc.join(group, ni);
这是一段从javadoc上copy的示例代码。没怎么看懂,特别是头两句。。。解释下吧。。。
我想用nio包中的异步通信的模式来实现组播的客户端的接收,而不是传统的模式。这样应该可以节省客户端占用的资源,不用一直处于监听状态!是吗???(我用传统的监听模式,一台电脑开一个服务端和两个客户端,cpu就能达到60%了= =。)
后面发现jdk 7中的multicastChannel应该可以实现我所想达到的效果,但不知道如何用,求指点。。。
------解决方案--------------------
JDK 7 的 sample 中就有例了,为啥不去看看呢?
在 JDK 7 sample 的 nio\multicast 目录中。
JDK 7 的 demo 和 sample 在这里下载:
http://www.oracle.com/technetwork/java/javase/downloads/index.html