本文共 2914 字,大约阅读时间需要 9 分钟。
package com.sjf;import java.net.Inet4Address;import java.net.Inet6Address;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.UnknownHostException;import java.util.Enumeration;/** * * @author sjf0115 * */public class InetAddressExample { public static void main(String[] args) { // Get the network interfaces and associated for this host try { NetworkInterface networkInterface = null; // 获得该主机每一个接口的信息 EnumerationinterfaceList = NetworkInterface.getNetworkInterfaces(); if(interfaceList == null) { System.out.println("--No interfaces found--"); }//if else { while(interfaceList.hasMoreElements()) { networkInterface = interfaceList.nextElement(); // 接口名称 System.out.println("Interface->"+networkInterface.getName()); // 获取与接口相关联的地址 根据主机的不同配置 可能包含IPV4或IPV6地址 Enumeration inetAddressList = networkInterface.getInetAddresses(); if(inetAddressList == null) { System.out.println("--No address for this NetworkInterface--"); }//if else { InetAddress address = null; while(inetAddressList.hasMoreElements()) { address = inetAddressList.nextElement(); // 对每个地址进行检测判断属于哪个IP地址子类 System.out.print(address instanceof Inet4Address ? "(v4)" : (address instanceof Inet6Address ? "(v6)" : "(?)")); // 打印IP地址 System.out.println(":"+address.getHostAddress()); }//while } }//while } } catch (Exception e) { } String host = "www.baidu.com"; try { // 一个名字可能关联了多个数字地址 该方法返回一组与给定主机名相关联的所有地址的实例 InetAddress[] addressesList = InetAddress.getAllByName(host); for(InetAddress address : addressesList) { System.out.println(address.getHostName()+" "+address.getHostAddress()); }//for // Determines the IP address of a host, given the host's name. InetAddress address2 = InetAddress.getByName(host); System.out.println(address2.getHostName()+" "+address2.getHostAddress()); // Returns the local host. InetAddress address3 = InetAddress.getLocalHost(); System.out.println(address3.getHostName()+" "+address3.getHostAddress()); } catch (UnknownHostException e) { e.printStackTrace(); } }}