2017-02-04 60 views
6

Na podstawie dokumentacji, powinienem być w stanie dodać więcej niż 1 typ zapytania w odnośniku, ale wynik jest zawsze tylko 1 typem.delphi indy IdDNSResolver nie zwraca wszystkich żądanych wyników dns

Na przykład ustawiłem id.QueryType: = [qtNS, qtA, qtMX]; i odzyskałem tylko rekord A. Usuwając qtA, otrzymuję 3 rekordy NS z powrotem, ale bez MX. Każdy z nich sam działa dobrze.

przykład:

id:=TIdDNSResolver.Create(nil); 
id.Host:='8.8.8.8'; 
id.QueryType:='[qtNS, qtA, qtMX]; 
id.Resolve('car.com'); 
... 

id.QueryResult.count jest tylko jeden, i zawiera tylko rekord.

Jak mogę uzyskać wszystkie 3 typy w 1 zapytaniu?

Odpowiedz

2

Żądania DNS są opisane w RFC 1035. Zgodnie z tym dokumentem, wysyłanie wielu pytań w tym samym żądaniu jest dozwolone, zakładam, że dlatego jest tak zaimplementowany w Indy.

W praktyce, serwery DNS zwykle nie obsługują tego i zwracają tylko jedną odpowiedź, nawet jeśli jest wiele pytań. Możesz znaleźć więcej informacji w this post, a także posty z nim związane.

Założę się, że serwery DNS odpowiedzą na pytanie pierwsze, więc jeśli przekażesz tablicę z wieloma typami, możesz oczekiwać odpowiedzi dla typu o najniższym identyfikatorze. W twoim przypadku priorytetem będzie qtA > qtNS > qtMX. Jeśli potrzebujesz odpowiedzi na wszystkie z nich, powinieneś rozwiązać je osobno.

+0

Dziękuję za szczegóły :) – Softtouch