package example1;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
/**
* 本例子目的:
* 1,打印出与本地主机关联的所有IP地址.
* 2,然后对于每个在命令行中指定的主机,打印出其相关的主机名和地址.
* commands:% java InetAddressExample www.google.cn bala.bala 129.23.67.6
* @author steve_wang_victor
* @date 2010-2-24
*/
public class InetAddressExample
{
/**
* @param args
*/
public static void main(String[] args)
{
Enumeration<NetworkInterface> interfaceList = null;
try
{
//返回该主机每一个接口所对应的网络接口(NetworkInterface)对应的实例列表.
interfaceList = NetworkInterface.getNetworkInterfaces();
if(interfaceList == null)
{
System.out.println("--No interface found --");
}
else
{
//打印出每一个接口所关联的地址.
while(interfaceList.hasMoreElements())
{
NetworkInterface iface = interfaceList.nextElement();
System.out.println("Interface " + iface.getName()+" :");
//返回一个接口的所关联的地址列表(getInetAddresses).
Enumeration<InetAddress> addrList = iface.getInetAddresses();
if(!addrList.hasMoreElements())
{
System.out.println("/t(No address for this interface)");
}
//打印出地址.
while(addrList.hasMoreElements())
{
InetAddress address = addrList.nextElement();
System.out.print("/tAddress "+
((address instanceof Inet4Address ? "(v4)" :
(address instanceof Inet6Address ? "(v6)" : "(?)"
))));
System.out.println(": "+address.getHostAddress());
}
}
}
} catch (SocketException e)
{
System.out.println("Error getting network interfaces:" + e.getMessage());
}
//获取从命令行输入的每个参数所对应的主机名和地址.
for (String host : args)
{
System.out.println(host +":");
try
{
//获取给定主机名/地址的相关地址列表.
InetAddress[] addressList = InetAddress.getAllByName(host);
for (InetAddress address : addressList)
{
System.out.println("/t"+address.getHostAddress()+"/"+address.getHostAddress());
}
} catch (UnknownHostException e)
{
System.out.println("/tUnable to find address for "+ host);
}
}
}
}