Java 如何在NIO.2中实现多播客户端?

Java 如何在NIO.2中实现多播客户端?,java,nio,multicast,Java,Nio,Multicast,使用Java7NIO.2多播客户端的示例是什么样子的?我只能在文档中找到一半的示例。此示例有效。请注意,DatagramChannel.join()需要一个NetworkInterface才能工作 NetworkInterface ni=NetworkInterface.getByInetAddress(地址); InetAddress组=InetAddress.getByName(“239.255.0.1”) DatagramChannel dc=DatagramChannel.open(St

使用Java7NIO.2多播客户端的示例是什么样子的?我只能在文档中找到一半的示例。

此示例有效。请注意,
DatagramChannel.join()
需要一个
NetworkInterface
才能工作

NetworkInterface ni=NetworkInterface.getByInetAddress(地址);
InetAddress组=InetAddress.getByName(“239.255.0.1”)
DatagramChannel dc=DatagramChannel.open(StandardProtocolFamily.INET)
.setOption(StandardSocketOptions.SO_REUSEADDR,true)
.bind(新的InetSocketAddress(5000))
.setOption(标准socketoptions.IP_MULTICAST_IF,ni);
MembershipKey=dc.join(组,ni);
ByteBuffer ByteBuffer=ByteBuffer.allocate(1500);
while(true){
if(key.isValid()){
byteBuffer.clear();
InetSocketAddress sa=(InetSocketAddress)dc.receive(byteBuffer);
byteBuffer.flip();
System.out.println(“从“+sa.getHostString()接收的多播”);
//TODO:解析消息
}
}

大多数硬件是否支持多播?如果没有呢?多播是否有效取决于底层网络堆栈。我想如果系统不支持多播,DatagramChannel.join()应该抛出一个异常,但这可能是特定于实现的。感谢Sundae提供了这个简洁(阻塞)的nio示例—这正是医生所要求的+1.