Can anyone please help?
I am not able to receive multicast on a multi-network-interface host.
This be the code:

public class LegacyMulticast {
public static void main(String[] args) throws IOException {
InetSocketAddress group = new InetSocketAddress("224.10.20.30", 12345);
NetworkInterface iface = NetworkInterface.getByName("eth3");
MulticastSocket socket = new MulticastSocket();
socket.setSoTimeout(5000);
socket.joinGroup(group , iface);
byte[] b = new byte[4096];
DatagramPacket datagram = new DatagramPacket(b, b.length);
try {
socket.receive(datagram);
System.out.println("Success");
}
catch (SocketTimeoutException ste) {
System.out.println("Failure");
}
socket.leaveGroup(group, iface);
}
}

The funny thing is that when I start this code, Wireshark detects IGMP join on the correct user interface caused by joinGroup call, constant UDP traffic on correct port flows and
finally I see correct IGMP leave caused by leaveGroup call.
I just don't receive anything on socket.receive call.
I am trying to figure this one out for days now. Pls help someone :)

P.S. I suspected security, but System.getSecurityManager() call returns null.
P.P.S. I also tried implementing this with NIO, but with same result.