code: protected void handleTCPSrvRqst(SrvRqst srvRqst, Socket socket)
      {
          // Match scopes, RFC 2608, 11.1
          if (!scopes.weakMatch(srvRqst.getScopes()))
          {
              tcpSrvRply.perform(socket, srvRqst, SLPError.SCOPE_NOT_SUPPORTED);
              return;
          }
  
          ServiceType serviceType = srvRqst.getServiceType();
          List<ServiceInfo> matchingServices = matchServices(serviceType, srvRqst.getLanguage(), srvRqst.getScopes(), srvRqst.getFilter());
          tcpSrvRply.perform(socket, srvRqst, matchingServices);
          if (logger.isLoggable(Level.FINE))
              logger.fine("DirectoryAgent " + this + " returning " + matchingServices.size() + " services of type " + serviceType);
      }
docs: Handles a unicast TCP 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 socket  the socket connected to th client where to write the reply
  @see #handleUDPSrvRqst(SrvRqst, InetSocketAddress, InetSocketAddress)
  @see #matchServices(ServiceType, String, Scopes, String)