I'm using Netty for sending and receiving UDP Multicast messages and when I create multiple servers on same node it sometimes stops stop receiving packets from other servers. However even though they don't receive any packet from other servers, they still keep receiving packets that are sent using same multicast server.
Here is the server code:
multicastAddress = new InetSocketAddress("239.255.27.1", 14878);
Bootstrap a = new Bootstrap()
.group(group)
.channelFactory(() -> new NioDatagramChannel(InternetProtocolFamily.IPv4))
.localAddress(multicastAddress)
.option(ChannelOption.IP_MULTICAST_IF, NetUtil.LOOPBACK_IF)
.option(ChannelOption.SO_REUSEADDR, true)
.handler(new ChannelInitializer<NioDatagramChannel>() {
@Override
public void initChannel(NioDatagramChannel ch) throws Exception {
h.pipeline().addLast(new ChannelInboundHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
System.out.println(msg);
}
});
}
});
multicastServer = (NioDatagramChannel) a.bind().sync().channel();
multicastServer.joinGroup(multicastAddress, NetUtil.LOOPBACK_IF).sync();
The client periodically sends same ByteBuf:
multicastServer.writeAndFlush(new DatagramPacket(Unpooled.copyInt(1), multicastAddress));
When I start a server on a node, it starts receiving packets that are sent from that server. Then, if create the second server on the same node, it usually works and the server receives packets sent from both first and second server. However when I create a few more servers that are bound to same port (I use ChannelOption.SO_REUSEADDR
so it should be a problem) sometimes all of the servers stop receiving packets from other servers instead only receive packets that are sent from the same server.