-
Task
-
Resolution: Won't Do
-
Minor
-
None
-
None
[Carlo DeWolf's email]
Bug 1:
Aha, in IPv6 mode the incorrect interface is chosen to send out packets.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4742177
So to actually get the right sender into the packet you must bind to the
address.
MultiSocket senderSocket = new MultiSocket(new
InetSocketAddress(sendFrom, 0));
Loopback must always be false. I'm not sure why, but if falls apart if
you set it to true. (Might be because of the above.)
senderSocket.setLoopback(false);
The receiving socket must be bound to INADDR_ANY (because of Windows):
receiverSocket = new MultiSocket(port);
Bug 2:
The receiver socket must join with an interface, because else the
packets sent from the sendSocket are immediately blocked by the
interface (not a member of the group).
receiverSocket.joinGroup(mcastaddr, netIf); // Note that port in
mcastaddr is ignored.
I think it's also possible to have the sendSocket join, but I'm done.
The effect here was that as long as nobody joins on the default
multicast interface, nobody receives packets. This would seldomly occur,
because there is always someone who joins the default interface.
I've attached by own multicast tester. Which works in every config
except on Windows with the counterfeit, doubtful, dubious, equivocal,
fake, false, fictitious, inaccurate, mythical, spurious,
unauthenticated, ungenuine, unsubstantiated, untrue, unverified, wrong
"MS TCP loopback" device.
- relates to
-
JGRP-639 UDP: bind MulticastSocket to multicast address
- Closed