2012-09-05 5 views
2

여러 개의 TXT 레코드가있는 도메인이 있습니다. Dig는 그들 모두를 보여줍니다. 네임 서버는 비 결정적 순서로이를 반환합니다. javax.naming.directory 클래스를 사용하여 이러한 레코드를 검색하려고 시도하면 이름 서버가 반환 한 이름의 모든 결과 만 검색됩니다. 이름 서버가 반환하는 순서가 다양하기 때문에 때로는 이름이 하나, 때로는 다른 이름이됩니다.Java로 DNS에서 여러 TXT 레코드를 검색하려면 어떻게합니까?

이 여기에 코드 조각입니다 :

Hashtable<String, String> env = new Hashtable<String, String>(); 
env.put("java.naming.factory.initial", 
      "com.sun.jndi.dns.DnsContextFactory"); 
DirContext dirContext = new InitialDirContext(env); 
Attributes attrs = dirContext.getAttributes(name, new String[] { "TXT" }); 

이 시점에서, attrs은 오직 하나 Attribute이 포함되어 있습니다. 이 예상되는 동작입니까? Java에서 모든 TXT 레코드를 검색하도록하려면 어떻게해야합니까?

Attributes attrs = dirContext.getAttributes("paypal.com", new String[] { "TXT" }); 
Attribute txt = attrs.get("TXT"); 
NamingEnumeration e = txt.getAll(); 
while (e.hasMore()) { 
    System.out.println(e.next()); 
} 

이 당신을 위해 작동하지 않는 경우 dnsjava 라이브러리가 확실히 허용 것 :의 (단일) 내 자신의 테스트에서

답변

3

는 속성이 내가 시도 도메인의 TXT 기록을 모두 포함 반환 모든 기록을 얻기.

+0

감사합니다. 내가 말할 수있는 것은 이것이 지금 작동한다는 것입니다, 그것은 이전에 작동하지 않았습니다! 또한, _itself_가 NamingEnumeration을 리턴 할 수있는 하나의 TXT'Attribute'가 리턴된다는 사실은 나를 잃어 버렸습니다. 그 내부의'NamingEnumeration'에는 TXT 레코드의 각각의 값을위한 엔트리가 포함됩니다. –

+0

@ PaulA.Hoadley 예 - "외부"NamingEnumeration은'.getAttributes()'호출에 제공된 목록의 각 RRTYPE 목록과 그 안에있는 각 RR에 대한 내부 열거 형 목록을 포함합니다. – Alnitak

+0

설명해 주셔서 감사합니다. 그것은 나에게 완전히 없어졌습니다. –

관련 문제