获取本机所有IP地址的方法 java.net包中的IP地址类InetAddress提供了可以获取本机IP地址的方法getLocalHost(),但是通过该方法只能获得第一个网络设备的IP地址。但是InetAddress提供了getAllByName(String host),可以通过主机名获取所有IP地址。下面就是获取本机所有IP地址的源码。
/* * NetTools.java * Created on 2004-9-29 * Copyright: */ import java.net.InetAddress;
/** * @author yanpeng * * */ public class NetTools {
public static String getLocalHostIP(){ String ip; try{ InetAddress addr = InetAddress.getLocalHost(); ip = addr.getHostAddress(); } catch(Exception ex){ ip = ""; } return ip; } public static String getLocalHostName(){ String hostName; try{ InetAddress addr = InetAddress.getLocalHost(); hostName = addr.getHostName(); } catch(Exception ex){ hostName = ""; } return hostName; } public static String[] getAllLocalHostIP(){ String[] ret = null; try{ String hostName = getLocalHostName(); if(hostName.length()>0){ InetAddress[] addrs = InetAddress.getAllByName(hostName); if(addrs.length>0){ ret = new String[addrs.length]; for(int i=0 ; i< addrs.length ; i++){ ret[i] = addrs[i].getHostAddress(); } } } } catch(Exception ex){ ret = null; } return ret; }
public static String[] getAllHostIPByName(String hostName){ String[] ret = null; try{ if(hostName.length()>0){ InetAddress[] addrs = InetAddress.getAllByName(hostName); if(addrs.length>0){ ret = new String[addrs.length]; for(int i=0 ; i< addrs.length ; i++){ ret[i] = addrs[i].getHostAddress(); } } } } catch(Exception ex){ ret = null; } return ret; } public static void main(String[] args) { //System.out.println(getLocalHostIP()); System.out.println("主机名:" + getLocalHostName()); String[] localIP = getAllLocalHostIP(); for(int i=0 ; i<localIP.length ; i++){ System.out.println( localIP[i]); } } }

|