大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: InetAddress 类

网路程序的第一步通常是从网址信息的处理开始,这很容易理解,如果连网址都无法取得,更别谈网路连线了。

java.net.InetAddress类可用来包装与进行网址处理的相关操作,它要有几个静态方法传回InetAddress对象:
public static InetAddress InetAddress.getLocalHost()
public static InetAddress InetAddress.getByName(String hostname)
public static InetAddress[] InetAddress.getAllByName(String hostname)

InetAddress主要包括两个栏位(field),即名称与位址,名称即像是www.caterpillar.onlyfun.net这样的名称, 而位址则是IP位址,我们可以使用getHostName()与getHostAddress()方法分别取得这两个信息。

getLocalhost()可以取得本机网址信息,下面这个简单的程序即可显示本机名称与位址:
  • Host.java
package onlyfun.caterpillar;

import java.net.*;

public class Host {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getLocalHost();
System.out.println(address);
System.out.printf("HostName: %s%n", address.getHostName());
System.out.printf("HostAddress: %s%n", address.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}

执行结果:
caterpillar-PC/192.168.1.23
HostName: caterpillar-PC
HostAddress: 192.168.1.23


下面的程序也很简单,可以指定查询远端主机的名称与IP位址:
  • Host.java
package onlyfun.caterpillar;

import java.net.*;

public class Host {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getByName(args[0]);
System.out.println(address);
System.out.printf("HostName: %s%n", address.getHostName());
System.out.printf("HostAddress: %s%n", address.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}

执行结果:
java onlyfun.caterpillar.Host caterpillar.onlyfun.net
caterpillar.onlyfun.net/64.22.69.61
HostName: caterpillar.onlyfun.net
HostAddress: 64.22.69.61


有的网站上可能拥有不止一个的IP位址,可以使用getAllByName()方法取回所有的网址信息,这会传回InetAddress对象数组,可以使用循环将这些对象一一取出,下面的程序是一个简单的示范:
  • Host.java
package onlyfun.caterpillar;

import java.net.*;

public class Host {
public static void main(String[] args) {
try {
InetAddress[] addresses = InetAddress.getAllByName(args[0]);
for(int i = 0; i < addresses.length; i++)
System.out.println(addresses[i]);
}
catch(UnknownHostException e) {
e.printStackTrace();
}
}
}

执行结果:
java onlyfun.caterpillar.Host cnn.com
cnn.com/64.236.16.20
cnn.com/64.236.16.52
cnn.com/64.236.24.12
cnn.com/64.236.29.120