使用java中InetAddress类进行反向DNS查找出现问题?

SelfMedicated 2012-05-05 04:24:11
我遇到一个和这博客里面描述一模一样的问题:http://blog.donews.com/maverick/archive/2005/07/26/482512.aspx


晚上看Programming Spiders Bots and Aggregators in Java,第一章就碰到问题。

通过Hostname检索IP倒是很容易:
InetAddress address = InetAddress.getByName("www.donews.com");
System.out.println(address);
就可以获得该HostName对应的IP地址
上面这段代码的输出结果是:
www.donews.com/61.135.128.150

如果不使用getByName方法,而是使用
getAllByName(String hostname)方法,就能够获得该Hostname对应的所有IP地址,返回的是InetAddress数组,我用www.sina.com.cn作参数,获得了16个地址:
www.sina.com.cn/202.106.185.243
www.sina.com.cn/202.106.185.244
www.sina.com.cn/202.106.185.248
www.sina.com.cn/61.135.153.177
www.sina.com.cn/61.135.153.178
www.sina.com.cn/61.135.153.179
www.sina.com.cn/61.135.153.180
www.sina.com.cn/61.135.153.181
www.sina.com.cn/61.135.153.182
www.sina.com.cn/61.135.153.183
www.sina.com.cn/61.135.153.184
www.sina.com.cn/202.106.185.237
www.sina.com.cn/202.106.185.238
www.sina.com.cn/202.106.185.239
www.sina.com.cn/202.106.185.241
www.sina.com.cn/202.106.185.242
www.sina.com.cn/202.106.185.243

按照书里的介绍,不需要更改上面的代码,只要把getByName的参数换成ip地址,就可以反向查找Hostname(reverse DNS),但是我测试不通过。
上网查了查,必须调用getHostName()或者getCanonicalHostName()方法,才能获得HostName。例如:
InetAddress address2 = InetAddress.getByName("64.236.16.84");
System.out.println(address2);
System.out.println(address2.getHostName());
System.out.println(address2.getCanonicalHostName());
输出是:
/64.236.16.84 <–此处的InetAddress方法显示与上面不同
www6.cnn.com
www6.cnn.com

奇怪的是,对于某些IP,却不能测试成功
例如,对于Donews的IP 61.135.128.150,运行上面的代码
输出的结果如下:
/61.135.128.150
61.135.128.150
61.135.128.150

我在Sun的网站上查到关于这个问题的讨论,看到最后的解决方案是
在InetAddress构造之前,添加这样一条语句:
System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun");
可是,在我的机器上测试无效

神奇,不知道什么时候能找到解决方案。
...全文
231 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolongbob 2012-06-14
  • 打赏
  • 举报
回复
分数不要浪费了
SelfMedicated 2012-06-14
  • 打赏
  • 举报
回复
没人回答,我就小号接分了哦
SelfMedicated 2012-05-05
  • 打赏
  • 举报
回复
自己顶了~~~

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧