下面列出了java.net.MulticastSocket#setLoopbackMode ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Creates multicast socket and joins multicast group.
*
* @throws IOException If fails to create socket or join multicast group.
* @return Multicast socket.
*/
private MulticastSocket createSocket() throws IOException {
MulticastSocket sock = new MulticastSocket(mcastPort);
sock.setLoopbackMode(false); // Use 'false' to enable support for more than one node on the same machine.
if (sockItf != null)
sock.setInterface(sockItf);
if (sock.getLoopbackMode())
U.warn(log, "Loopback mode is disabled which prevents nodes on the same machine from discovering " +
"each other.");
sock.joinGroup(mcastGrp);
if (ttl != -1)
sock.setTimeToLive(ttl);
return sock;
}
Multicast(final Tracker tracker) throws IOException {
this.tracker = tracker;
multicast = new MulticastSocket(port);
multicast.setLoopbackMode(loopbackMode);
multicast.setTimeToLive(timeToLive);
multicast.joinGroup(address.getAddress());
multicast.setSoTimeout((int) heartRate);
listenerThread = new Thread(new Listener());
listenerThread.setName("MulticastDiscovery: Listener");
listenerThread.setDaemon(true);
listenerThread.start();
final Broadcaster broadcaster = new Broadcaster();
timer = new Timer("MulticastDiscovery: Broadcaster", true);
timer.scheduleAtFixedRate(broadcaster, 0, heartRate);
}
/**
*
* @param multicastSocket
* @param multicastAddress
*/
public static void joinMulticastGroup(MulticastSocket multicastSocket, InetAddress multicastAddress)
throws IOException {
setInterface(multicastSocket, multicastAddress instanceof Inet6Address);
multicastSocket.setLoopbackMode(false);
multicastSocket.joinGroup(multicastAddress);
}