code: @Override
    public void sendProbe(Probe probe) throws TransportException {
  
      LOGGER.info("Sending probe [" + probe.getProbeID() + "] on network inteface [" + networkInterface.getName() + "] at port [" + multicastAddress + ":" + multicastPort + "]");
      LOGGER.debug("Probe requesting TTL of [" + probe.getHopLimit() + "]");
  
      try {
        String msg = probe.asXML();
  
        LOGGER.debug("Probe payload (always XML): \n" + msg);
  
        byte[] msgBytes;
        msgBytes = msg.getBytes(StandardCharsets.UTF_8);
  
        // send discovery string
        InetAddress group = InetAddress.getByName(multicastAddress);
        DatagramPacket packet = new DatagramPacket(msgBytes, msgBytes.length, group, multicastPort);
        outboundSocket.setTimeToLive(probe.getHopLimit());
        outboundSocket.send(packet);
  
        LOGGER.debug("Probe sent on port [" + multicastAddress + ":" + multicastPort + "]");
  
      } catch (IOException e) {
        throw new TransportException("Unable to send probe. Issue sending UDP packets.", e);
      } catch (JAXBException e) {
        throw new TransportException("Unable to send probe because it could not be serialized to XML", e);
      }
  
    }
docs: Actually send the probe out on the wire.
  
  @param probe the Probe instance that has been pre-configured
  @throws TransportException if something bad happened when sending the
  probe