【发布时间】:2015-06-30 10:31:16
【问题描述】:
几天来,我一直试图让 udp 多播在 Windows 上运行,但没有成功。这是一个简单的应用程序,它只是加入一个组并写入在 OSX 上工作但在 Windows 上引发通道关闭异常的控制台。任何帮助将不胜感激。
public class UDPMulticastTest {
public void start() throws Exception{
EventLoopGroup group=new NioEventLoopGroup();
ChannelGroup allChannels=new DefaultChannelGroup("Test", ImmediateEventExecutor.INSTANCE);
try{
Bootstrap b=new Bootstrap();
b.group(group)
.channel(NioDatagramChannel.class)
.option(ChannelOption.SO_BROADCAST,true)
.handler(new SimpleChannelInboundHandler<DatagramPacket>() {
@Override
protected void channelRead0(ChannelHandlerContext arg0, DatagramPacket arg1) throws Exception {
String res=arg1.content().toString(CharsetUtil.UTF_8);
System.out.println(res);
}
});
InetSocketAddress hostAddress=new InetSocketAddress("239.21.208.200", 58999);
ChannelFuture channelFuture=b.bind(hostAddress);
channelFuture.awaitUninterruptibly();
Channel channel=channelFuture.channel();
DatagramChannel datagramChannel=(DatagramChannel)channel;
NetworkInterface multicastNetworkInterface=NetworkInterface.getByName("wlan0"); //used en0 for OSX,
datagramChannel.joinGroup(hostAddress, multicastNetworkInterface).syncUninterruptibly();
allChannels.add(datagramChannel);
channel.closeFuture().await();
}finally{
group.shutdownGracefully();
}
}
public static void main(String[] args)throws Exception{
new UDPMulticastTest().start();
}
}
【问题讨论】:
标签: java udp netty nio multicast