2017-02-04 4 views
6

설명서에 따라 조회에 둘 이상의 쿼리 유형을 추가 할 수 있어야하지만 결과는 항상 1 유형입니다.delphi indy IdDNSResolver가 요청한 모든 DNS 결과를 반환하지 않음

예를 들어, id.QueryType : = [qtNS, qtA, qtMX]; 나는 A 레코드 만 돌려 받는다. qtA를 삭제하면 3 개의 NS 레코드가 반환되지만 MX는 반환되지 않습니다. 그들 각각은 잘 작동합니다.

예 :

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

id.QueryResult.count 그냥 하나이며, 그것은 단지 A 레코드가 포함되어 있습니다.

그럼 어떻게 하나의 쿼리에서 3 가지 유형 모두를 얻을 수 있습니까?

답변

2

DNS 요청은 RFC 1035에 설명되어 있습니다. 이 문서에 따르면 같은 요청으로 여러 질문을 보내는 것이 허용됩니다. 그게 인디에서 이런 식으로 구현 된 이유입니다.

praxis에서 DNS 서버는 일반적으로이 기능을 지원하지 않으며 여러 질문이 있어도 단 하나의 대답 만 반환합니다. this post에 대한 자세한 정보와 거기에서 링크 된 게시물을 확인할 수 있습니다.

DNS 서버가 첫 번째 질문에 응답한다고 가정하므로 여러 유형의 배열을 전달하면 가장 낮은 ID를 가진 유형에 대한 대답을 기대할 수 있습니다. 귀하의 경우 우선 순위는 qtA > qtNS > qtMX입니다. 모두에 대한 답변이 필요한 경우 별도로 해결해야합니다.

+0

감사합니다. – Softtouch