code: protected void handleUDPSrvRqst(SrvRqst srvRqst, InetSocketAddress localAddress, InetSocketAddress remoteAddress)
      {
          // Match scopes, RFC 2608, 11.1
          if (!scopes.weakMatch(srvRqst.getScopes()))
          {
              udpSrvRply.perform(localAddress, remoteAddress, srvRqst, SLPError.SCOPE_NOT_SUPPORTED);
              return;
          }
  
          ServiceType serviceType = srvRqst.getServiceType();
          List<ServiceInfo> matchingServices = matchServices(serviceType, srvRqst.getLanguage(), srvRqst.getScopes(), srvRqst.getFilter());
          if (logger.isLoggable(Level.FINE))
              logger.fine("DirectoryAgent " + this + " returning " + matchingServices.size() + " services of type " + serviceType);
          udpSrvRply.perform(localAddress, remoteAddress, srvRqst, matchingServices);
      }
docs: Handles a unicast UDP SrvRqst message arrived to this directory agent.
  <br />
  This directory agent will reply with a list of matching services.
  
  @param srvRqst       the SrvRqst message to handle
  @param localAddress  the address on this server on which the message arrived
  @param remoteAddress the address on the remote client from which the message was sent
  @see #handleMulticastSrvRqst(SrvRqst, InetSocketAddress, InetSocketAddress)
  @see #handleTCPSrvRqst(SrvRqst, Socket)
  @see #matchServices(ServiceType, String, Scopes, String)