在一篇关于生命科学标识符(参见 LSID Tester, a tool for testing Life Science Identifier resolution services)的论文中,Roderic DM Page 博士写道:
给定 LSID urn:lsid**:ubio.org**:namebank:11815,向 DNS 查询 _lsid._tcp 的 SRV 记录。ubio.org 返回 animalia.ubio.org:80 作为 ubio.org LSID 服务的位置。
我了解到我可以在 unix 上使用 host 命令将 _lsid._tcp.ubio.org 链接到 animalia.ubio.org:80:
host -t srv _lsid._tcp.ubio.org
_lsid._tcp.ubio.org has SRV record 1 0 80 ANIMALIA.ubio.org
我如何使用 Java J2SE API 来做这个“DNS”事情(没有任何外部 Java 库,我想要一个轻量级的解决方案)?
谢谢
最佳答案
JNDI DNS 提供程序可以查找 SRV 记录。您需要执行以下操作:
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”。空格分隔的字段按顺序排列:
- 优先级
- 体重
- 港口
- 服务器
关于java - 查询 DNS 服务记录以查找主机名和 TCP/IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/738750/