Multicast receiver issue

Davide Rossoni rossoni.davide at gmail.com
Wed Nov 11 03:39:55 EST 2009


Hello Trustin, 
     thanks for your prompt reply.
This is the working receiver, hope this helps:

public class OldMulticastReceiver {
	private final Logger logger = LoggerFactory.getLogger(getClass());

	private MulticastSocket mcastSocket;
	private InetAddress mcastGroup;
	private Listener listener;

	public void joinGroup() throws IOException {
		mcastGroup = InetAddress.getByName("228.10.10.10");
		mcastSocket = new MulticastSocket(2222);
		mcastSocket.setTimeToLive(1);
	
mcastSocket.setNetworkInterface(NetworkInterface.getByInetAddress(InetAddress.getByName("172.26.16.20")));
		mcastSocket.joinGroup(mcastGroup);

		listener = new Listener();
	}

	public void start() throws IOException {
		if (mcastSocket == null) {
			throw new IOException("Receiver could not be started: please join group
first.");
		}

		Thread tWriter = new Thread(listener, "MulticastReceiver-Writer");
		tWriter.start();
	}

	private class Listener implements Runnable {

		private static final int DATAGRAM_BYTES = 128;
		private boolean keepReceiving = true;

		public void run() {
			int previousMessageID = -1;
			byte receive_buf[] = new byte[DATAGRAM_BYTES * 2];
			byte[] data;
			int len;

			ByteBuffer byteBuffer = ByteBuffer.allocate(DATAGRAM_BYTES);
			DatagramPacket mcastPacket = new DatagramPacket(receive_buf,
receive_buf.length);

			while (keepReceiving) {
				try {
					mcastPacket.setData(receive_buf, 0, receive_buf.length);

					// Receive the datagram.
					mcastSocket.receive(mcastPacket);

					len = mcastPacket.getLength();
					data = mcastPacket.getData();
					
					logger.info("Here we are! Data = " + data + ", len = " + len);

					byteBuffer.clear();
					byteBuffer.put(data, 0, len);
					byteBuffer.flip();

				} catch (IOException e) {
					if (logger.isWarnEnabled()) logger.warn("Failed I/O: " +
e.getMessage(), e);
				} catch (Exception e) {
					logger.error("Error receiving message: " + e.getMessage(), e);
				}
			}
			try {
				mcastSocket.leaveGroup(mcastGroup);
			} catch (IOException e) {
				if (logger.isWarnEnabled()) logger.warn("Socket problem leaving group: "
+ e.getMessage(), e);
			}
			mcastSocket.close();

		}
	}

}





Trustin Lee wrote:
> 
> Hello Davide,
> 
> Thanks for reporting a problem first of all.
> 
> This is weird.  Could you please post the working legacy code so that
> I can find the difference?
> 
> — Trustin Lee, http://gleamynode.net/
> 
> _______________________________________________
> netty-dev mailing list
> netty-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-dev
> 
> 

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



More information about the netty-dev mailing list