Вопрос по java – Java DNS Lookup для записей SRV

5

В приведенном ниже Java-коде я выполняю поиск записи DNS SRV для разрешения имени целевого домена и связанного порта для данного доменного имени, такого как [email protected] Функция поиска, обозначенная /HERE/ внизу как-то возвращает ноль, и я не могу получить результат запроса (то есть массив записей равен нулю). Как следствие, исключение пустого указателя генерируется при обращении к массиву записей в цикле for.

Как вы думаете, мне не хватает, чтобы заставить работать следующий код. Я использую с помощью dnsjava и соответствующий файл JAR API доступен по адресуhttp://www.dnsjava.org/download/  (внизу страницы). Заранее спасибо за ваше предложение.

     import org.xbill.DNS.Lookup;
     import org.xbill.DNS.Record;
     import org.xbill.DNS.SRVRecord;
     import org.xbill.DNS.TextParseException;
     import org.xbill.DNS.Type;

     public class DNSLookup {

        public static void main(String[] args) {

          if (args.length < 1) {
             System.err.println("Usage: java -jar DNSLookup <hostname>");
             System.exit(1);
          }

          String query = "_ssh._tcp." + args[0];

          try {
            /*****HERE*********/
            Record[] records = new Lookup(query, Type.SRV).run();

            for (Record record : records) {
                 SRVRecord srv = (SRVRecord) record;

            String hostname = srv.getTarget().toString().replaceFirst("\\.$", "");
            int port = srv.getPort();

            System.out.println(hostname + ":" + port);
          }
          } catch (TextParseException e) {
             e.printStackTrace();
          }
       }
      }

Ваш Ответ

1   ответ
3

Lookup.run() возвращаетсяnull (not пустой массив), если записи не найдены.

Например, если вы замените_ssh._tcp с_nicname._tcp а затем посмотрите вверхuk вы найдете SRV-запись для .UKwhois сервер.

Если есть проблема, это связано с вашими входными параметрами.

Похожие вопросы