InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost.getHostName());
System.out.println(localHost.getHostAddress()); 上面方法在WINDOWS下可以获取真实的地址,但是在LINUX下(比如UBUNTU),返回的值永远是127.0.0.1,不知道有人能否给出一个解决方案?谢谢。

解决方案 »

  1.   

    linux下返回127.0.0.1。主要是在linux下返回的是/etc/hosts中配置的localhost的ip地址,
    而不是网卡的绑定地址。后来改用网卡的绑定地址,可以取到本机的ip地址:)代码如下://根据网卡取本机配置的IP
                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;
                  }
          }