首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询DNS服务记录以查找主机名和TCP/IP

查询DNS服务记录以查找主机名和TCP/IP
EN

Stack Overflow用户
提问于 2009-04-10 20:17:33
回答 4查看 9.8K关注 0票数 8

在一篇关于生命科学标识符(参见LSID测试工具,用于测试生命科学标识符解析服务)的论文中,Roderic博士写道:

给定LSID _lsid._tcp.ubio.org,查询urn:lsid**:ubio.org**:namebank:11815的DNS记录将返回animalia.ubio.org:80作为ubio.org LSID服务的位置。

我了解到可以使用unix上的_lsid._tcp.ubio.org主机命令将链接到

代码语言:javascript
复制
host -t srv _lsid._tcp.ubio.org
_lsid._tcp.ubio.org has SRV record 1 0 80 ANIMALIA.ubio.org

我如何使用Java (没有任何外部的J2SE库,我想要一个轻量级的解决方案)来做这个'DNS‘?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-25 05:35:53

JNDI提供程序可以查找SRV记录。你需要做的事情是:

代码语言:javascript
复制
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
env.put("java.naming.provider.url", "dns:");
DirContext ctx = new InitialDirContext(env);
Attributes attrs = ctx.getAttributes("_lsid._tcp.ubio.org", new String[] { "SRV" });

返回的属性是字符串的枚举,这些字符串看起来类似于"1 0 80 ANIMALIA.ubio.org“。空格分隔的字段按顺序排列:

  1. 优先级
  2. 重量
  3. 端口
  4. 服务器
票数 19
EN

Stack Overflow用户

发布于 2009-04-11 14:49:44

您不能使用标准的Java库来完成这个任务。InetAddress类只能查找DNS A记录。

要查找SRV记录(以及除A记录之外的任何其他DNS资源记录类型),您需要一个第三方库。dnsjava是通常的选择。

我个人在Google上使用了1.6版本,它运行得很好。2.0版本和更高版本使用的是Java层,因此与早期的nio不兼容。

票数 11
EN

Stack Overflow用户

发布于 2009-04-10 20:26:27

我认为,如果不使用一些外部库,就无法做到这一点。java.util.InetAddress有一些通过DNS解析名称的方法,但它仅用于将名称解析为IP地址,而不用于一般的DNS查询。

为此,您需要一些外部库,如DNSJava

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/738750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档