자바

2009-10-22 1 views

답변

2

내가 원하는지 확실하지 않지만 Java에서 DNS 기능을 제공하는 DNSJava 라이브러리가 있습니다. 아마 당신은이 문제를 더 잘 이해하거나 특정 솔루션을 구현하기 위해 이것을 사용할 수 있습니까? 내가 말했듯이, 당신에게 완벽한 경기는 아니지만 도움이 될 것입니다.

2

특정의 InetAddress를 보려면 다음을 수행하십시오

// get the default initial Directory Context 
InitialDirContext idc = new InitialDirContext(); 
// get the DNS records for inetAddress 
Attributes attributes = idc.getAttributes("dns:/" + inetAddress.getHostName()); 
// get an enumeration of the attributes and print them out 
NamingEnumeration attributeEnumeration = attributes.getAll(); 
System.out.println("-- DNS INFORMATION --"); 
while (attributeEnumeration.hasMore()) { 
    System.out.println("" + attributeEnumeration.next()); 
} 
attributeEnumeration.close(); 

은 당신이 찾고있는 무엇을 데리러에 적응.

+0

나를 위해 작동하지 않았습니다. 방금 A 레코드가 있고 다른 속성은 없습니다. 어쩌면 환경적인 문제 일 수 있습니다. – Brabster

+0

음, * A 레코드는 도메인의 IP 주소 *를 제공합니다. 이게 정확히 네가 요구 한 것이 아닌가? –

0

네이밍 컨텍스트가 필요합니다. 선택적으로 DNS 서버를 지정할 수 있습니다. 그리고 심지어 당신이 찾고있는 것을 선택해야합니다. 다음은 그 예입니다.

final String ADDR_ATTRIB = "A"; 
final String[] ADDR_ATTRIBS = {ADDR_ATTRIB}; 
final Properties env = new Properties(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory"); 
idc = new InitialDirContext(env); 
env.put(Context.PROVIDER_URL, "dns://"+dnsServer); 
final List<String> ipAddresses = new LinkedList<>(); 
final Attributes attrs = idc.getAttributes(hostname, ADDR_ATTRIBS); 
final Attribute attr = attrs.get(ADDR_ATTRIB); 
if (attr != null) for (int i = 0; i < attr.size(); i++) ipAddresses.add((String) attr.get(i));