我写了两个程序 第一个whois.java找到给定主机名的IP地址
import java.net.*;
import java.io.*;
public class whois{
public static void main(String args[]) throws IOException{
String hostName = args[0];
try{
InetAddress ipaddress = InetAddress.getByName(hostName);
System.out.println("IP address: " + ipaddress.getHostAddress());
}catch(UnknownHostException e){
System.out.println("Could not find IP address for: " + hostName);
}
}
}
和其他whois2.java找到给定ip的主机名
import java.net.*;
import java.io.*;
class whois2{
public static void main(String args[]){
try{
String str[] = args[0].split("\\.");
byte btArr[] = new byte[]{(byte)Integer.parseInt(str[0]), (byte)Integer.parseInt(str[1]), (byte)Integer.parseInt(str[2]), (byte)Integer.parseInt(str[3])};
InetAddress ipAddr = InetAddress.getByAddress(btArr);
System.out.println("Host name for this is : " + ipAddr.getHostName());
}catch(UnknownHostException e){
System.out.println("Unable to find the host for ip specified " + args[0]);
}
}
}
然后我用jdk 1.6运行程序并得到以下输出:
$java whois google.com
IP address: 209.85.231.104
$java whois2 209.85.231.104
Host name for this is : maa03s01-in-f104.1e100.net
为什么主机名不同于google.com?
提前致谢
答案 0 :(得分:2)
由DNS查找定义的负责处理对特定主机名的请求的服务器不需要与原始查找的主机名相同。
更典型的例子是foobar.com的请求由IP服务器处理,IP的主机名为www.foobar.com。
另请注意,处理服务器可能因地区而异。
所以我使用linux 主机工具获得相同的结果:
joel@bohr:~$ host google.com
google.com has address 173.194.37.104
...对google.com的请求应由服务器处理,地址为173.194.37.104
joel@bohr:~$ host 173.194.37.104
104.37.194.173.in-addr.arpa domain name pointer lhr14s02-in-f104.1e100.net.
......服务器的主机名为173.194.37.104,为lhr14s02-in-f104.1e100.net
joel@bohr:~$ host lhr14s02-in-f104.1e100.net
lhr14s02-in-f104.1e100.net has address 173.194.37.104
...和健全检查,lhr14s02-in-f104.1e100.net的IP确实是173.194.37.104
答案 1 :(得分:1)
whois(ip)
解析为已注册服务器的名称,而不是域名服务器上的条目。
当我们在网络上使用whois服务时也是如此:
http://whois.domaintools.com/google.com解析为IP 74.125.155.99
(来自我的位置!),http://whois.domaintools.com/74.125.155.99解析主机px-in-f99.1e100.net
(这与您的搜索结果不同)