JAVA 获取本机全部网络接口的全部IP地址

网上很多通过java获取本机ip地址的代码不是仅能在windows下运行,就是在linux下取得信息不足

 

由于linux的特殊性,通过InetAddresse类获取LocalHost的地址一直为/etc/hosts文件中与本机hostname绑定的那个地址(ubuntu 9.04下默认是127.0.1.1)。

因此,一种解决问题的思路是修改host文件,但并不推荐这样做,除非机器的ip地址是非常固定的。

另一种方式,正如 http://blog.linuxeden.com/?uid-51058-action-viewspace-itemid-4713 中的提到的,是通过直接获取操作系统网络接口的方式来获得ip地址,代码如下:

 

Enumeration allNetInterfaces = null; try { allNetInterfaces = NetworkInterface.getNetworkInterfaces(); } catch (java.net.SocketException e) { e.printStackTrace(); } InetAddress ip = null; while (allNetInterfaces.hasMoreElements()) { NetworkInterface netInterface = (NetworkInterface) allNetInterfaces .nextElement(); System.out.println(netInterface.getName()); Enumeration addresses = netInterface.getInetAddresses(); while (addresses.hasMoreElements()) { ip = (InetAddress) addresses.nextElement(); if (ip != null && ip instanceof Inet4Address) { System.out.println("/u672c/u673a/u7684IP = " + ip.getHostAddress()); } } } 


    对于获取的网络接口中的网络地址的处理可根据不同需求来进行,在本例中则是判断其是否为一个ipv4类型的地址,如果是则输出该地址。

 

【windows xp, ubuntu 9.04下测试通过】

 

你可能感兴趣的:(java,windows,linux,网络,ubuntu,null)