java获取本机的ip地址

作者:网络 来源:佚名 更新时间:2008-02-08 19:54:40 点击:
 

可以用如下代码:

           inetaddress inet = inetaddress.getlocalhost();
            system.out.println("本机的ip=" + inet.gethostaddress());

在window下面可以工作。在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;
       }
   }