Multicast receiver issue

Davide Rossoni rossoni.davide at gmail.com
Tue Nov 10 10:32:55 EST 2009


I'm trying to adopt Netty in order to re-implement my Multicast Sender and
Receiver.

It works fine with the MulticastSender using Netty with old blocking I/O,
but I spent three days trying to understand how to implements the
MulticastReceiver: I did not receive any multicast message.

Please note that using a simple java MulticastSocket implementation it works
very well, and I receive data sent from the Netty-MulticastSender.

Could you help me?

Here an extract of my Receiver class:

DatagramChannelFactory datagramChannelFactory = new
OioDatagramChannelFactory(Executors.newCachedThreadPool());

ConnectionlessBootstrap connectionlessBootstrap = new
ConnectionlessBootstrap(datagramChannelFactory);
ChannelPipeline channelPipeline = connectionlessBootstrap.getPipeline();
			
channelPipeline.addLast("handler", new MulticastReceiverHandler());

connectionlessBootstrap.setOption("receiveBufferSize", receiveBufferSize);
connectionlessBootstrap.setOption("sendBufferSize", sendBufferSize);
connectionlessBootstrap.setOption("trafficClass", trafficClass);
connectionlessBootstrap.setOption("soTimeout", soTimeout);
connectionlessBootstrap.setOption("broadcast", broadcast);
connectionlessBootstrap.setOption("loopbackMode", loopbackMode);
connectionlessBootstrap.setOption("reuseAddress", reuseAddress);

DatagramChannel datagramChannel = (DatagramChannel)
connectionlessBootstrap.bind(new InetSocketAddress(172.26.16.20, 0));

InetSocketAddress multicastAddress = new InetSocketAddress(228.10.10.10,
2222);
NetworkInterface networkInterface =
NetworkInterface.getByInetAddress(InetAddress.getByName(PriceFeederHelper.multicastNIC));
datagramChannel.joinGroup(multicastAddress, networkInterface);



Here my ReceiverHandler class:

@ChannelPipelineCoverage("all")
public class MulticastReceiverHandler extends SimpleChannelUpstreamHandler {

	private final Logger logger = LoggerFactory.getLogger(getClass());

	@Override
	public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
throws Exception {
		logger.info("message = " + e.getMessage());

		ctx.sendUpstream(e);
	}

	@Override
	public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
throws Exception {
		logger.error("Unexpected exception from downstream.", e.getCause());
		e.getChannel().close();
		
		super.exceptionCaught(ctx, e);
	}

}

-- 
View this message in context: http://n2.nabble.com/Multicast-receiver-issue-tp3980385p3980385.html
Sent from the Netty Developer Group mailing list archive at Nabble.com.


More information about the netty-dev mailing list