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