code: protected void send() {
  
  		// Check number of packets
  		int udpMaxDiscovery = transporter.getUdpMaxDiscovery();
  		if (udpMaxDiscovery > 0) {
  			if (numberOfSubmittedPackets >= udpMaxDiscovery) {
  
  				// Has no timer
  				if (timer != null) {
  					logger.info("Discovery service stopped successfully, " + udpMaxDiscovery + " packets sent.");
  					timer.cancel(false);
  					timer = null;
  				}
  
  				// Has timer
  				return;
  			}
  		}
  		numberOfSubmittedPackets++;
  		synchronized (receivers) {
  
  			// First time use the all address to notify other nodes
  			if (numberOfSubmittedPackets == 1) {
  				for (UDPReceiver receiver : receivers) {
  					receiver.send();
  					try {
  						Thread.sleep(200);
  					} catch (InterruptedException interrupt) {
  						return;
  					}
  				}
  				return;
  			}
  
  			// Use the next network address
  			nextIndex++;
  			if (nextIndex >= receivers.size()) {
  				nextIndex = 0;
  			}
  			receivers.get(nextIndex).send();
  		}
  	}
docs: --- UDP BROADCAST / MULTICAST SENDER ---