晨月

爱是恒久忍耐,又有恩慈;爱是不嫉妒,爱是不自夸,不张狂,不作害羞的事,不求自己的益处,不轻易发怒,不计算人的恶,不喜欢不义,只喜欢真理;凡事包容,凡事相信,凡事盼望,凡事忍耐---圣经

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 

可以用如下代码:

           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;
       }
   }

posted on 2006-03-20 08:56  晨月  阅读(1023)  评论(0编辑  收藏  举报