package com.juick.xmpp.s2s; import java.net.UnknownHostException; import java.util.Hashtable; import java.util.Random; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; /** * * @author ugnich */ public class DNSQueries { private static Random rand = new Random(); public static HostnamePort getServerAddress(String hostname) throws UnknownHostException { String host = hostname; int port = 5269; try { Hashtable env = new Hashtable(5); env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory"); DirContext ctx = new InitialDirContext(env); Attribute att = ctx.getAttributes("_xmpp-server._tcp." + hostname, new String[]{"SRV"}).get("SRV"); if (att != null && att.size() > 0) { int i = rand.nextInt(att.size()); try { String srv[] = att.get(i).toString().split(" "); port = Integer.parseInt(srv[2]); host = srv[3]; } catch (Exception e) { } } ctx.close(); } catch (NamingException e) { } return new HostnamePort(host, port); } }