您的位置:首页 > 编程语言 > Java开发

java指定dns

2015-12-27 11:51 441 查看
/**
* 获取DNS服务器信息
*
* @param domain  要获取DNS信息的域名
* @param provider      DNS服务器
* @param types   信息类型 "A"(IP信息),"MX"
* @param timeout 请求超时
* @param retryCount    重试次数
*
* @return 所有信息组成的数组
*
* @throws NamingException
*
*/

@SuppressWarnings("rawtypes" )
public static ArrayList<String> getDNSRecs(String domain, String provider,
String [] types, int timeout, int retryCount) throws NamingException {

ArrayList<String> results = new ArrayList<String>(15);

Hashtable<String, String> env = new Hashtable<String, String>();

env.put( "java.naming.factory.initial" ,
"com.sun.jndi.dns.DnsContextFactory" );

//设置域名服务器
env.put(Context. PROVIDER_URL, "dns://" + provider);

// 连接时间
env.put( "com.sun.jndi.dns.timeout.initial" , String.valueOf(timeout));

// 连接次数
env.put( "com.sun.jndi.dns.timeout.retries" , String.valueOf(retryCount));

DirContext ictx = new InitialDirContext(env);
Attributes attrs = ictx.getAttributes(domain, types);

for (Enumeration e = attrs.getAll(); e.hasMoreElements();) {
Attribute a = (Attribute) e.nextElement();
int size = a.size();
for (int i = 0; i < size; i++) {
results.add((String) a.get(i));
}
}
return results;
}

/**
* 获取域名所有IP
* @param domain  域名
* @param dnsServers    DNS服务器列表
* @param timeout 请求超时
* @param retryCount    重试次数
* @return
*/
public static Set<String> getAllIP(String domain, String[] dnsServers,
int timeout, int retryCount) {
Set<String> ips = new HashSet<String>();

for(String dnsServer: dnsServers) {
List<String> ipList;
try {
ipList = getDNSRecs(domain, dnsServer, new String[]{"A"},
timeout, retryCount);
} catch (NamingException e) {
continue;
}
ips.addAll(ipList);
}

return ips;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 服务器 return