Windows可以用如下代码:
java代码
- InetAddress inet = InetAddress.getLocalHost();
- System.out.println("本机的ip=" + inet.getHostAddress());
但是上述代码在Linux下返回127.0.0.1。主要是在linux下返回的是/etc/hosts中配置的localhost的ip地址,而不是网卡的绑定地址。后来改用网卡的绑定地址,可以取到本机的ip地址:):
java代码
-
- Enumeration netInterfaces=NetworkInterface.getNetworkInterfaces();
- InetAddress ip = null;
- while(netInterfaces.hasMoreElements())
- {
- NetworkInterface ni= NetworkInterface)netInterfaces.nextElement();
- System.out.println(ni.getName());
- ip=(InetAddress) ni.getInetAddresses().nextElement();
- if( !ip.isSiteLocalAddress()
- && !ip.isLoopbackAddress()
- && ip.getHostAddress().indexOf(":")==-1)
- {
- System.out.println("本机的ip=" + ip.getHostAddress());
- break;
- }
- else
- {
- ip=null;
- }
- }