MulticastChannel
这个新的接口允许开启IP多播,因此你可以向一个完整的组发送和接收IP数据报。多播实现了直接绑定本地多播设备,这个接口是通过DatagramChannel和AsynchronousDatagramChannel实现的。
下面是从Javadoc中摘取的一个打开DatagramChannel t的简单示例:
NetworkInterface networkInterface = NetworkInterface.getByName("hme0");
DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)
.setOption(StandardSocketOption.SO_REUSEADDR, true)
.bind(new InetSocketAddress(5000))
.setOption(StandardSocketOption.IP_MULTICAST_IF, networkInterface);
InetAddress group = InetAddress.getByName("225.4.5.6");
MembershipKey key = dc.join(group, networkInterface);
DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)
.setOption(StandardSocketOption.SO_REUSEADDR, true)
.bind(new InetSocketAddress(5000))
.setOption(StandardSocketOption.IP_MULTICAST_IF, networkInterface);
InetAddress group = InetAddress.getByName("225.4.5.6");
MembershipKey key = dc.join(group, networkInterface);
你可以使用以前经常使用的DatagramChannel,但操作方式是多播了,因此你收到的是接口中所有的数据包,你发送的数据包会发到所有组。